【发布时间】:2016-09-04 20:35:24
【问题描述】:
我正在尝试创建一个用户名文本框,如果它是以下任何一种(!,@,#,$,%,^,&,*,(,),+,=,;,: ,`,~,|,',?,/,.,>,
我们的想法不是事后进行检查,而是在点击的那一刻进行。我有两个这样做的想法,结果都不好。第一个 JS 脚本似乎根本不起作用,第二个 JS 脚本冻结了整个选项卡。
我当前的 HTML 代码是:
<form name = "RegForm" class="login">
<input type="text" name="username" id="username" placeholder="Enter your username">
</form>
我的第一个 JS 脚本是: 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;
}
}
}
}
我的第二个 JS 脚本是: 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();
}
我的代码有什么问题,我应该怎么做?
任何有启发性的答案将不胜感激!
【问题讨论】:
标签: javascript html arrays validation input