preventDefault()不在输入类型文本中工作

use*_*216 2 javascript jquery javascript-events

这是我的代码:

$('#Login').keydown(function(e){         
        if(e.which  == 32){     
            alert("enter");
            this.preventDefault();            
        }        
    });
Run Code Online (Sandbox Code Playgroud)

此代码不起作用,但发送警报

$('#Pwd,#Pwd2').on('keydown',function(e){
        if(e.which == 32){
            e.preventDefault();
        }
    });
Run Code Online (Sandbox Code Playgroud)

这段代码有效.我不懂为什么.

Dal*_*las 6

您希望阻止Event(作为事件函数的参数传入的默认操作,您正在调用它e).

this是你的事件的目标元素(即:在这种情况下e.target,它将是你的#Login元素),而不是一个事件本身,这没有preventDefault().

只需使用该Event对象:

$('#Login').keydown(function(e){         
    if(e.which == 32){     
        e.preventDefault();            
    }        
});
Run Code Online (Sandbox Code Playgroud)

有了上述内容,您每次看到空格键时都会看到该活动被取消#Login:http://jsfiddle.net/xWmUU/