using jQuery here, however unable to prevent numbers from being typed into the input field
http://codepen.io/leongaban/pen/owbjg
Input
<input type="text" name="field" maxlength="8"
title="Only Letters"
value="Type Letters Only"
onkeydown="return alphaOnly(event);"
onblur="if (this.value == '') {this.value = 'Type Letters Only';}"
onfocus="if (this.value == 'Type Letters Only') {this.value = '';}"/>
jQuery
function alphaOnly(event) {
alert(event);
var key;
if (window.event) {
key = window.event.key;
} else if (e) {
key = e.which;
}
//var key = window.event.key || event.key;
alert(key.value);
return ((key >= 65 && key <= 90) || (key >= 95 && key <= 122));
}
I've seen plenty of examples here on how to restrict to only Numbers, and I'm using the correct key codes for a-z and A-Z. Do you see what I'm doing wrong?
The property
event.key
gave me an undefined value. Instead, I usedevent.keyCode
:Note that the value of 8 is for the backspace key.
Rather than relying on key codes, which can be quite cumbersome, you can instead use regular expressions. By changing the pattern we can easily restrict the input to fit our needs. Note that this works with the
keypress
event and will allow the use of backspace (as in the accepted answer). It will not prevent users from pasting 'illegal' chars.Nice one-liner HTML only:
Short ONELINER:
For all unicode letters try this regexp:
/\p{L}/u
(but ... this) - and here is working example :)On newer browsers, you can use:
You can use regular expressions to restrict the input fields.