这是我的代码:
$('#Login').keydown(function(e){
if(e.which == 32){
alert("enter");
this.preventDefault();
}
});
此代码不起作用,但发送警报
$('#Pwd,#Pwd2').on('keydown',function(e){
if(e.which == 32){
e.preventDefault();
}
});
此代码有效。 我不明白为什么。
答案 0 :(得分:6)
您希望阻止Event
的默认操作(作为事件函数的参数传入,您将其称为e
)。
this
是您的事件的目标元素(即:在这种情况下e.target
将是您的#Login
元素)而不是事件本身,这不具备preventDefault()
。
只需使用Event
对象:
$('#Login').keydown(function(e){
if(e.which == 32){
e.preventDefault();
}
});
有了上述内容,您每次点击#Login
中的空格键时都会看到该活动已取消:http://jsfiddle.net/xWmUU/
答案 1 :(得分:1)
preventDefault
是Event对象的一个方法,因此在事件调用时它有效。
this
会引用#Login
,这是一个DOM对象,不会有preventDefault
方法。
请注意,由于事件传播的工作原理,this
并不总是等于e.target
。