jquery preventDefault() 在 chrome 中有时不起作用
jquery preventDefault() is not working sometimes in chrome
我试图通过 preventDefault()
阻止回车键的默认行为,但这不是 working.Here 是我的代码
$(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 Pressed
,但它会提醒 both.Is 代码中有什么错误吗?这里是 link 详情 Js.do
一个。 Wolff 是正确的,因为 alert() 框会发生这种情况。这与我在 C# 中遇到的问题非常相似,这里解释了为什么会发生这种情况。
Javascript中的主线程在调用alert
时暂停指定函数的执行。但是,它不会暂停 Javascript 的执行。因此,即使初始事件从未结束,您的第二个事件也会被调用。这就是 event.preventDefault()
不起作用的原因。如果您 运行 在控制台打开的情况下执行下面的代码,您应该注意到 click
在退出 keydown
被记录之前被记录。
我得到的日志输出是:
Start KeyDown Function
Start Click Function
End Click Function
End KeyDown Function
$(document).ready(function() {
$("#Last").keydown(function(event) {
if (event.keyCode == 13) {
console.log('Start KeyDown Function');
alert("Enter Pressed");
event.preventDefault();
console.log('End KeyDown Function');
}
});
$("#ffff").click(function(event) {
console.log('Start Click Function');
event.preventDefault();
alert("Submit Button Clicked");
console.log('End Click Function');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<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>
我试图通过 preventDefault()
阻止回车键的默认行为,但这不是 working.Here 是我的代码
$(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 Pressed
,但它会提醒 both.Is 代码中有什么错误吗?这里是 link 详情 Js.do
一个。 Wolff 是正确的,因为 alert() 框会发生这种情况。这与我在 C# 中遇到的问题非常相似,这里解释了为什么会发生这种情况。
Javascript中的主线程在调用alert
时暂停指定函数的执行。但是,它不会暂停 Javascript 的执行。因此,即使初始事件从未结束,您的第二个事件也会被调用。这就是 event.preventDefault()
不起作用的原因。如果您 运行 在控制台打开的情况下执行下面的代码,您应该注意到 click
在退出 keydown
被记录之前被记录。
我得到的日志输出是:
Start KeyDown Function
Start Click Function
End Click Function
End KeyDown Function
$(document).ready(function() {
$("#Last").keydown(function(event) {
if (event.keyCode == 13) {
console.log('Start KeyDown Function');
alert("Enter Pressed");
event.preventDefault();
console.log('End KeyDown Function');
}
});
$("#ffff").click(function(event) {
console.log('Start Click Function');
event.preventDefault();
alert("Submit Button Clicked");
console.log('End Click Function');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<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>