Reputation: 546
I just want to cancel the keydown event when I type the key except a number,
for this, I did the following :
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);" />
but It doesn't work, how can I solve this problems? I have no idea why e.preventDefault() don't work in any browser.
Upvotes: 0
Views: 1196
Reputation: 56
Here is a code that will return false if the key pressed is not a number.
Use the keypress event
instead of keydown
.
$(fieldid).keypress(function(e) {
if (e.which != 8 && e.which != 0 && (e.which<48 || e.which>57)) {
return false;
}
});
Upvotes: 1
Reputation: 46900
Event is undefined, You can pass it like this
<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);" />
Upvotes: 2