Reputation: 12621
I am trying to prevent users from typing certain characters in text boxes and this is the code that I have so far :
$().ready(function() {
$(".textbox").keypress(function(event) {
var keyVal = event.keyCode;
if ((keyVal > 48 && keyVal < 57)) { // Numbers
return false;
}
});
});
It is entering the event and the condition but the character is still inserted. Any ideas on how I go about this?
Upvotes: 1
Views: 3882
Reputation: 833
You have to include keyVal = 48 and keyVal = 57 or you will be allowing the 0 and 9 respectively. The final code would look like this:
$().ready(function(){
$(".textbox").keypress(function(event){
var keyVal = (event.charCode || event.keyCode || event.which);
if((keyVal >= 48 && keyVal <= 57))// Numbers
{
return false;
}
});
});
Also looks clearer using the || operator as Devon suggested.
Upvotes: 0
Reputation: 216
Your keyVal assignment didn't take all browsers into account. This piece of code works in Firefox, IE7, Safari, Chrome and won't let you type numbers in the field, tested with a normal text input element:
$().ready(function(){
$(".textbox").keypress(function(event){
var keyVal = (event.charCode ? event.charCode : ((event.keyCode) ? event.keyCode : event.which));
if((keyVal > 48 && keyVal < 57))// Numbers
{
return false;
}
});
});
Upvotes: 2
Reputation: 490263
When I've had to do things like this, I've used the event onkeyup
.
Instead of stripping out the chars automatically (which may lead to user confusion), why not have a regex that checks for valid chars on key up, and then maybe displays a side note to the input, something like 'You may not enter numbers in this field', or something more specific to the actual input field, 'Your city name may not include number(s).'.
Upvotes: 0