我为什么要两次提交表格?jQuery submit()带单选按钮

Hca*_*tek 3 html javascript jquery radio-button double-submit-problem

我正在使用jQuery在MVC应用程序中提交表单.我在控制器内部有一个断点,我看到它被击中了两次.我究竟做错了什么?

这是我的jQuery

 (function ($) {

    $(document).ready(function () {

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

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

    });
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

这是表格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>
Run Code Online (Sandbox Code Playgroud)

我猜我不应该使用change事件.如果有人知道如何解决问题,我很乐意听到任何想法.非常感谢任何提示.

干杯,
〜在圣地亚哥

Mat*_*ury 6

你有两个点击,因为两个单选按钮正在改变状态.单选按钮仅允许选择组中的一个元素,因此当您单击单选按钮时,会发生两个事件:

  1. 选择了一个新的单选按钮
  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>
Run Code Online (Sandbox Code Playgroud)

你的jQuery可能是:

$('.radio').click(function () {
    $('#frmMDR').submit();
});
Run Code Online (Sandbox Code Playgroud)

  • 很确定`click`实际上并不意味着单击"单击"单选按钮.至少对于复选框,它会在标签+空格键上触发. (2认同)