jquery preventDefault()有时在chrome中不起作用

jquery preventDefault()有时在chrome中不起作用,jquery,preventdefault,Jquery,Preventdefault,我试图通过preventDefault()阻止enter键的默认行为,但它不起作用。这是我的代码 $(document).ready(function(){ $("#Last").keydown(function(event){ if (event.keyCode==13) { event.preventDefault(); alert("Enter Pressed"); }}); $("#ffff").click(function(event

我试图通过
preventDefault()
阻止enter键的默认行为,但它不起作用。这是我的代码

$(document).ready(function(){
 $("#Last").keydown(function(event){
     if (event.keyCode==13) {
      event.preventDefault();
      alert("Enter Pressed");
      }});

 $("#ffff").click(function(event){
        event.preventDefault();
        alert("Submit Button Clicked");
         });
});
这里是html部分

<form action="http://www.google.co.in">
First name: <input type="text" name="FirstName" value="Al"><br>
Last name: <input type="text" id="Last" name="LastName" value="McCoy"><br>
<input type="button" value=" Next " id="validate">
<input id="ffff" type="submit" value="Submit">
</form> 

名字:
姓氏:

因此,根据上面的代码,如果我在姓氏字段上按Enter键,它应该只提醒
Enter Pressed
,但它会同时提醒这两个字段。代码中有什么错误吗?下面是详细信息的链接。Wolff认为出现这种情况是因为出现了alert()框,这是正确的。这与我在《C#》中遇到的一个问题非常相似,下面是它发生原因的解释

调用
alert
时,Javascript中的主线程暂停指定函数的执行。但是,它不会暂停Javascript的执行。因此,即使初始事件从未完成,也会调用第二个事件。这就是
事件.preventDefault()
无法工作的原因。如果在控制台打开的情况下运行下面的代码,您应该注意到在记录退出键之前,
单击

我得到的日志输出是:

Start KeyDown Function
Start Click Function
End Click Function
End KeyDown Function
$(文档).ready(函数(){
$(“#Last”).keydown(函数(事件){
如果(event.keyCode==13){
console.log('Start KeyDown Function');
警报(“按回车键”);
event.preventDefault();
console.log('End KeyDown函数');
}
});
$(“#ffff”)。单击(函数(事件){
console.log('Start Click Function');
event.preventDefault();
警报(“点击提交按钮”);
console.log('End Click Function');
});
});

名字:

姓氏:

为我工作。请检查控制台是否有任何错误如果按钮无论如何都不应该提交表单,只需将其类型更改为
按钮
,而不是
提交
@adeneo:ya它在JSFIDLE中工作正常,但为什么在chrome中不工作。仅供参考,我正在使用此版本的jQuery我看到您的问题是您正在设置警报()这是keydown中的模态,它似乎阻止了
事件。preventDefault()
,默认行为仍然被触发。使用控制台(正如您应该做的)修复了它::谢谢您的解释。事实上,我是jQuery的初学者。所以您能推荐我任何网站或书籍来获得所有这些细节吗?我将不胜感激。