2012-04-07 5 views
1

アイテムがある場合はリストがあり、アイテムがある場合はボタンがあります。そのボタンをクリックするとサーバーコールが行われ、そのコールの後にボタンテキストを変更する必要があります。だから私は、コールをajaxifyするために、この関数を書く:ajaxコールの後に特定のボタンの値を変更する方法

@using (Html.BeginForm("Confirm", "Products", new { productId = @t.ProductId }, FormMethod.Post, new { @class="form"})) 
{ 
<input style="width: 60px;" class="itemHoverBox button white" type="submit" value="Confirm" /> 
} 

しかし、この変更ページのすべてのitemHoverBox、そして私がしようとしていることはちょうど私がクリックしたボタンを変更することです:

$('.form').ajaxForm({ 
      beforeSubmit: function() {     
      }, 
      success: function (result) { 
       $('.itemHoverBox').attr('value', 'Confirmed'); 
      }, 
      error: function (xhr, textStatus, errorThrown) {   
      } 
     }); 

これは、アクションボタンで。あなたが好きな質問の星をここでクリックすると、ここstackoverflow。
私のアクションメソッドは、今のところvoidを返す:

[HttpPost] 
     public void CollectTicket(int ticketId) 
     { 
      ...   
     } 

答えて

3

あなたが閉鎖でフォームをキャプチャすることができます:

$('.form').each(function() { 
    var form = $(this); 
    form.ajaxForm({ 
     success: function (result) { 
      form.find('.itemHoverBox').attr('value', 'Confirmed'); 
     } 
    }); 
}); 

あるいはクリーナーを、contextパラメータを使用して:

$('.form').each(function() { 
    var form = $(this); 
    form.ajaxForm({ 
     context: form, 
     success: function (result) { 
      // Here this will equal to the context object we specified 
      this.find('.itemHoverBox').attr('value', 'Confirmed'); 
     } 
    }); 
}); 
+0

このコードまだOPが避けようとしているものである 'Confirmed'にクラス名 'itemHoverBox'を持つフォーム内のすべてのボタンを変更します。 –

+0

@ChrisGessler、いいえ、それはできません。成功コールバックには、 '$( '。itemHoverBox')'とまったく同じではない 'form.find( '。itemHoverBox')'というセレクタがあります。私のセレクタはフォームのすべての**子要素**を 'itemHoverBox'クラスで見つけるのに対し、2番目のメソッドは単にこのクラスを持つDOMのすべての要素を選択するだけです。 –

+0

すべての「フォーム内」を修正してください。ボタンを1つだけ変更したい場合は、要素のIDを使用する方がよいでしょう。個人的には、これを行うためにjQueryをまったく使用しません。 document.getElementById()ははるかに高速です。 –

関連する問題