我有以下jquery函数,避免在输入文本中输入“1”:
<input id="myId" style="width:50%;" value="0" type="text">
$("#myId").keypress(function(e) {
var x=e.charCode;
if (x == '49'){
e.preventDefault();
}
});
这是jsfiddle
不适用于IE8。我的错误在哪里?提前谢谢!
编辑JAVASCRIPT VERSION
<input id="myId" style="width:50%;" value="0" type="text" onkeypress="javascript:checkNumber(event);"/>
function checkNumber(event) {
var x=e.which;
if (x == 49){
event.preventDefault();
}
}
答案 0 :(得分:3)
charCode
不是跨浏览器,您可以使用jQuery which
属性:
event.which
属性规范化event.keyCode
和event.charCode
。建议观看event.which
键盘输入键。
var x = e.which;
如果你不使用jQuery,你可以编码:
var x = e.charCode || e.keyCode;
答案 1 :(得分:0)
请参阅this answer一个类似的问题。请尝试使用keydown
代替keypress
和keyCode
代替charCode
:
$("#myId").keydown(function(e) {
var x=e.keyCode;
if (x == '49'){
e.preventDefault();
}
});
jQuery documentation for keypress列出了使用keydown
的一些充分理由,其中最重要的是它只会触发一次按住,而按键会报告字符,而不是密钥(在处理像Capslock这样的事情时会出现问题。)
答案 2 :(得分:0)
请改用e.which
,因为并非所有浏览器都支持e.charCode
。
此外,您可以考虑使用.keyup()
事件而不是.keypress()