Been playing around with JavaScript, and what Im trying to do is only allow certain characters in the pass word field - a-z, A-Z and 0-9.
You need to make your condition test a regexp, not a string:
if(!/^[a-zA-Z0-9]+$/.test(name)){ ...
meaning:
^
-- start of line[a-zA-Z0-9]+
-- one or more characters/numbers$
-- end of lineor you could search for the inverse of that, which is "any non-accepted character":
if(/[^a-zA-Z0-9]/.test(name)){
if (name.match(/[\W_]/)) { //...
Meaning if the "name" string has any character which is a non-alphanumeric or an underscore then execute the block. Note that we have to separately check for underscore (_
) because the alphanumeric character class (\w
) includes the underscore (so the negative class (\W
) does not).
The below solution will accept only the alpha numeric value and some special key like backspace, delete etc.
If you want to add some other key then add to the array .
If you want to add some special symbol add to the same array or create a new array and compare it on the function like ex:
yourNewVariableName.indexOf(e.keyCode)
var specialKeys = [8, 9, 46, 36, 35, 37, 39];
function IsAlphaNumeric(e) {
var keyCode = e.keyCode == 0 ? e.charCode : e.keyCode;
var ret = ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122) || (specialKeys.indexOf(e.keyCode) != -1 && e.charCode != e.keyCode));
return ret;
}
Alphanumeric value:
<input type="text" onkeypress="return IsAlphaNumeric(event);" ondrop="return false;" onpaste="return false;" />