我正在使用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>
我猜我不应该使用更改事件。如果有人知道如何解决问题,我很乐意听到任何想法。非常感谢任何提示。
干杯,
〜在圣地亚哥
答案 0 :(得分:6)
你有两个点击,因为两个单选按钮正在改变状态。单选按钮只允许选择组中的一个元素,因此当您单击单选按钮时,会发生两个事件:
这是两个事件以及您的代码被击中两次的原因。要解决这个问题,你可以给你的单选按钮一个类,然后使用类作为选择器单击处理事件。
<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();
});
答案 1 :(得分:3)
您应该只检查选择的更改功能中的选定内容。这样它只会触发所选的单选按钮,并且您不需要担心绑定或解除任何事件的绑定,无论输入方法改变了什么,它都应该工作。
这是关于handling events from check boxes and radio buttons in JQuery的文章。