Saturday, May 11, 2024
 Popular · Latest · Hot · Upcoming
186
rated 0 times [  190] [ 4]  / answers: 1 / hits: 16576  / 8 Years ago, tue, may 10, 2016, 12:00:00

I am trying to create a username textbox that blocks the user's input if it is any of these (!,@,#,$,%,^,&,*,(,),+,=,;,:,`,~,|,',?,/,.,>,<,,, ,).



The idea is not to make the check afterwards but at the moment of the click. I've had two ideas of doing that both ending up bad. The first JS script doesn't seem to work at all and the second JS script freezes the entire tab.



My current HTML code is:



<form name = RegForm class=login>
<input type=text name=username id=username placeholder=Enter your username>
</form>


My first JS script is:
https://jsfiddle.net/ck7f9t6x



userID_textfield.onkeydown = function(e) {   
var prohibited = !@#$%^&*()+=;:`~|'?/.><, ;
var prohibitedchars = prohibited.split();
var prohibitedcharcodes = new Array();

for (var i = 0; i < prohibitedchars.length + 1; i++) {
prohibitedcharcodes.push(prohibitedchars[i].charCodeAt(i));
for (var a = 0; a < prohibitedcharcodes.length + 1; a++) {
if (prohibitedcharcodes[a] === e.which) {
return false;
}
else {
return true;
}
}
}
}


My second JS script is:
https://jsfiddle.net/2tsehcpm/



var username_textfield = document.forms.RegForm.username;
username_textfield.onkeydown = function(e) {
var prohibited = !@#$%^&*()+=;:`~|'?/.><, ;
var prohibitedchars = prohibited.split();
var text = this.value.toString();
var chars = text.split();
for (var i = 0; i < chars.length + 1; i++) {
for (var a = 0; a < prohibitedchars.length + 1; a++) {
if (chars[i] == prohibitedchars[a]) {
chars[i] = null;
}
}
}
this.value = chars.join();
}


What is wrong with my code and what should I be doing instead?



Any enlightening answer would be greatly appreciated!


More From » html

 Answers
8

I have updated your initial fiddle here.



The method I chose for simplicity was to get the string character of the key attempting to be pressed and then checked if it were in the prohibited array.



You should note that I changed to using the onkeypress instead of onkeydown event, as the first includes modifiers like the shift key when utilising fromCharCode(), while the other does not (as keypressed checks the full key combination).



Code:



el.onkeypress = function(e) {   
// invalid character list
var prohibited = !@#$%^&*()+=;:`~|'?/.><, ;
// get the actual character string value
var key = String.fromCharCode(e.which);
// check if the key pressed is prohibited
if(prohibited.indexOf(key) >= 0){
console.log('invalid key pressed');
return false;
}
return true;
};

[#62242] Saturday, May 7, 2016, 8 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
donaldcristianl

Total Points: 114
Total Questions: 95
Total Answers: 110

Location: Bonaire
Member since Sat, May 27, 2023
1 Year ago
;