我只想在键入除数字
之外的键时取消keydown事件为此,我做了以下事情:
function handleNum(obj){
var e = window.event;
var flag = true;
if( ( e.keyCode >= 48 && e.keyCode <= 57 ) ||
( e.keyCode >= 96 && e.keyCode <= 105 ) ||
e.keyCode == 8 ||
e.keyCode == 46 ||
//e.keyCode == 110 ||
//e.keyCode == 190 ||
e.keyCode == 37 ||
e.keyCode == 39 ||
e.keyCode == 35 ||
e.keyCode == 36 ||
e.keyCode == 9
) {
flag = true;
} else {
alert('You can type only a number!');
console.log("doesn't return?");
e.preventDefault();
flag = false;
}
console.log(flag);
return flag;
}
html:
<input type="text" onkeydown="return handleNum(this);" />
但它不起作用,我该如何解决这个问题呢? 我不知道为什么e.preventDefault()在任何浏览器中都不起作用。
答案 0 :(得分:2)
事件未定义,您可以像这样传递
<script>
function handleNum(e,obj){
if (!e) var e = window.event;
var flag = true;
if( ( e.keyCode >= 48 && e.keyCode <= 57 ) ||
( e.keyCode >= 96 && e.keyCode <= 105 ) ||
e.keyCode == 8 ||
e.keyCode == 46 ||
//e.keyCode == 110 ||
//e.keyCode == 190 ||
e.keyCode == 37 ||
e.keyCode == 39 ||
e.keyCode == 35 ||
e.keyCode == 36 ||
e.keyCode == 9
) {
flag = true;
} else {
alert('You can type only a number!');
console.log("doesn't return?");
e.preventDefault();
flag = false;
obj.value = obj.value.replace(/\D/g, '');
}
console.log(flag);
return flag;
}
</script>
<input type="text" onKeyDown="return handleNum(event,this);" />
<强> Fiddle 强>
答案 1 :(得分:1)
如果按下的键不是数字,这是一个返回false的代码。
使用keypress event
代替keydown
。
$(fieldid).keypress(function(e) {
if (e.which != 8 && e.which != 0 && (e.which<48 || e.which>57)) {
return false;
}
});