3

jQueryを使用してMVCアプリでフォームを送信しています。コントローラ内にブレークポイントがあり、2回ヒットしていることがわかります。私は何が間違っているのですか?

これが私のjQueryです

 (function ($) {

    $(document).ready(function () {

        $(':radio').change(function () {

            $('#frmMDR').submit();
        });

    });
})(jQuery);

これがフォームhtmlです

<form action="/Module/ModuleIndex" id="frmMDR" method="get">
  <input id="rdoMaintenance" name="module" type="radio" value="Maintenance" /><label for="rdoMaintenance">M</label>
   <input id="rdoDiagnostics" name="module" type="radio" value="Diagnostics" /><label for="rdoDiagnostics">D</label>
   <input id="rdoRepair" name="module" type="radio" value="Repair" /><label for="rdoRepair">R</label>
 <input id="hdnVehicle" name="hdnVehicle" type="hidden" value="" />
</form>

変更イベントを使用するべきではないと思います。誰かが問題を修正する方法を知っているなら、私は何かアイデアを聞いてみたいです。ヒントをありがとうございます。

乾杯、
サンディエゴで〜ck

4

2 に答える 2

6

2つのラジオボタンの状態が変化しているため、2つのヒットがあります。ラジオボタンでは、グループ内の1つの要素しか選択できないため、ラジオボタンをクリックすると、次の2つのイベントが発生します。

  1. 新しいラジオボタンが選択されました
  2. 以前に選択したラジオボタンの選択が解除されます

これは2つのイベントであり、コードが2回ヒットする理由です。これを解決するには、ラジオボタンにクラスを指定し、クラスをセレクターとして使用してクリック時にイベントを処理します。

<input class="radio" id="rdoMaintenance" name="module" type="radio" value="Maintenance" /><label for="rdoMaintenance">M</label>
<input class="radio" id="rdoDiagnostics" name="module" type="radio" value="Diagnostics" /><label for="rdoDiagnostics">D</label>
<input class="radio" id="rdoRepair" name="module" type="radio" value="Repair" /><label for="rdoRepair">R</label>

そして、jQueryは次のようになります。

$('.radio').click(function () {
    $('#frmMDR').submit();
});
于 2010-12-16T16:55:00.033 に答える
3

おそらく、選択されている変更機能内で選択されているかどうかを確認する必要があります。このようにすると、選択したラジオボタンに対してのみ起動し、イベントのバインドまたはバインド解除について心配する必要はなく、どの入力メソッドが変更したかに関係なく機能するはずです。

これは、JQueryのチェックボックスとラジオボタンからのイベントの処理に関する記事です。

于 2010-12-16T18:26:41.127 に答える