3

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

这是我的 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>

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

干杯,
~ck 在圣地亚哥

4

2 回答 2

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>

你的 jQuery 可能是:

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

您可能应该只在选择的更改功能中检查选择。这样,它只会为选定的单选按钮触发,您无需担心绑定或取消绑定任何事件,并且无论哪种输入法更改它,它都应该工作。

这是一篇关于从 JQuery 中的复选框和单选按钮处理事件的文章。

于 2010-12-16T18:26:41.127 回答