2010-07-07 82 views
1

我想阻止用户在文本框中输入某些字符(只允许[a-z],[A-Z]和下划线)。我把这个从以前的Q,但如果我按箭头键(在FF 3.6),我得到一个js错误:阻止在文本框中键入某些字符?

"window.event is undefined" 

这是原代码,我能在这个变化window.event来情况?:

$("#myTextBox").bind("keypress", function(event) { 
    var charCode = (event.which) ? event.which : window.event.keyCode; 
    if (charCode <= 13) { 
     return true; 
    } 
    else { 
     var keyChar = String.fromCharCode(charCode); 
     var re = /[a-zA-Z_]/ 
     return re.test(keyChar); 
    } 
}); 

感谢

回答

9

你可以做这样的:

$("#myTextBox").bind("keypress", function(event) { 
    var charCode = event.which; 
    if (charCode <= 13) return true; 

    var keyChar = String.fromCharCode(charCode); 
    return /[a-zA-Z_]/.test(keyChar); 
});​ 

jQuery normalizes event.which already ...和you can test it here :)

如果没有,修复也只是event.keyCode,要参考event作为参数传递给这个函数,而不是window一个属性传递。在这种情况下,如果if条件成立,它会返回...因此不需要if/else,您可以像我上面那样简化它。

+0

是的,似乎正常化了,谢谢! – user291701 2010-07-07 22:27:22

+1

链接到jQuery源代码...令人兴奋! – Narayana 2012-04-10 14:49:41

+0

我们可以使用Change事件吗? – 2014-07-16 07:00:19

0

只需删除窗口,因为你的事件是在jQuery中定义的($)

相关问题