button点击事件在不同的input按下回车键(没有窗体)
在“金额”input中按下“Enter”时,这个逻辑会触发,我不相信它(它不在Chrome中)。 我怎样才能防止这一点,如果不阻止在IE中,处理它,使得点击事件中的逻辑不会触发。
<html> <body> <div id="page"> <div id="financed_amount"> <h1>Financed Amount:</h1> <input type="text" id="amount" value="" /> </div> <h1>Finance Options</h1> <div> <a id="shareLink" rel="leanModal" name="email" href="#email"></a> <button id="btnShare" class="share">Share this report</button> </div> </div> </body> </html>
脚本
$("#btnShare").click(function (e) { // This logic is firing when pressing "Enter" in the "Amount" input });
- Jquery:1.7.2
- IE 9
- (在Chrome中运行)
我遇到了同样的问题,并通过向<button>
元素添加type="button"
属性来解决此问题,IE将该button视为一个简单的button,而不是提交button(这是<button>
元素的默认行为) 。
我今天遇到了这个问题。 IE假定,如果你在任何文本字段中按回车键,你想提交表格 – 即使这些字段不是表格的一部分,即使button不是“提交”types。
您必须用preventDefault()来覆盖IE的默认行为。 在你的jQueryselect器中,放入包含你想忽略回车键的文本框的div – 在你的情况下,“页”div。 而不是select整个div,你也可以指定你想要忽略的文本框。
$('#page').keypress(function(e) { if(e.which == 13) { // Checks for the enter key e.preventDefault(); // Stops IE from triggering the button to be clicked } });
IE认为任何button
元素都是一个提交button(不pipe你是否有form
)。 它还处理按下表单元素中的Enter
键作为隐式表单提交。 所以,因为它认为你正在试图提交你的表单,它会指出它将帮助你解决click
事件(它认为是)的提交button。
您可以将input
事件附加到input
或button
然后检查Enter
键(例如e.which === 13
)并return false;
我遇到ASP.NET WebForms的这个问题:
<asp:Button />
这不能通过添加type =“button”来解决,因为ASP.NET用type =“submit”replace它(如果检查元素,可以在浏览器中看到这种行为)。
在asp.net中这样做的正确方法是添加
<asp:Button UseSubmitBehavior="false" />
到button。 ASP会自动添加type =“button”属性。
每个button都是基于jQuery的解决scheme是:
$('button').prop('type', 'button'); // To prevent IE from treating every button as a submit and firing a click() event
然而,由于某种原因,点击事件仍然会冒泡到父元素。