在IE浏览器中,当在输入文本框中按下回车键时,按钮的OnClick事件被触发。

6

我网页上有几个用于搜索的输入文本框:

<input type="text" id="mfrText"  name="MfrSearchText" value='@ViewBag.SearchAndSort.MfrSearchText' />
<input type="text" id="partText"  name="PartNoSearchText" value="@ViewBag.SearchAndSort.PartNoSearchText" />  </
<input type="text" id="descText" name="DescriptionSearchText" value="@ViewBag.SearchAndSort.DescriptionSearchText" /> 

我有一个按钮,它有一个点击事件来显示一个对话框。

<button class="btnAdd btn-xs">Add</button>

我遇到的问题是,当按下回车键并且一个输入框获得焦点时,按钮的onclick事件就会触发,导致对话框被显示。我尝试使用e.preventDefault()方法,也尝试检查是否按下了回车键而不是鼠标点击,但都没有成功。这种情况在IE中出现,但在Chrome中没有。我该如何防止这种行为发生?
我的click事件:
$(".btnAdd").click(function (e) {

         alert($(".btnAdd").is(":focus"));
         var partID = $(this).closest('tr').attr('id');
         $("#divAdd").dialog({
             modal: true,
             title: 'Increase Qty',
             buttons: {
                 "Save": function () {
                     var qty = $("#addQtyAdd").val();
                     var clockNo = $("#addClockNo").val();
                     var asset = $("#addAssetNo").val();

                     AddPart(partID, qty, clockNo, asset);
                 },
                 Cancel: function () {
                     $(this).dialog("close");
                 }
             }
         });
         $(".ui-dialog-title").css("color", "lightgreen");
     });
1个回答

12
那是所期望/预期的行为。 尝试:
<button type="button" class="btnAdd btn-xs">Add</button>

这将防止按钮被视为提交控件,并且将被Enter键忽略。


我不知道按钮隐式地是一个输入。感谢您提供简单的解决方案。 - Bill Greer
是的,我前一段时间也是通过“艰难”的方式发现了这个 XD。 - Niet the Dark Absol
1
六年过去了,它仍然困扰着Web开发人员 :facepalm: - mix3d

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接