Javascript验证:阻止特殊字符

Shy*_*yju 9 javascript validation

如何限制用户在文本框中输入特殊字符.我只想输入数字和字母(键入/粘贴).

有样品吗?

小智 16

试试这个,这个函数允许使用字母数字和空格:

function alpha(e) {
    var k;
    document.all ? k = e.keyCode : k = e.which;
    return ((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 || k == 32 || (k >= 48 && k <= 57));
}
Run Code Online (Sandbox Code Playgroud)

在你的HTML中:

<input type="text" name="name"  onkeypress="return alpha(event)"/>
Run Code Online (Sandbox Code Playgroud)


jrh*_*ath 9

你有两种方法:

  1. 检查"按键"事件.如果用户按下特殊字符键,请将其停在那里
  2. 检查"onblur"事件:当输入元素失去焦点时,验证其内容.如果该值无效,则在该输入框旁边显示一条谨慎的警告.

我会建议第二种方法,因为它不那么刺激.记得也检查一下onpaste.如果您只使用按键,那么我们可以复制并粘贴特殊字符,因此onpaste也可以限制粘贴特殊字符

此外,我还建议您重新考虑是否确实要阻止用户输入特殊字符.因为很多人的密码都有$,#,@和*.

我认为这可能是为了防止SQL注入; 如果是这样:你处理服务器端的检查更好.或者更好的是,转义值并将它们存储在数据库中.

  • 限制输入不一定是限制性的,它可能是输入电话号码,邮政编码,日期等。但是建议+1,以便在服务器端加倍检查! (2认同)

dLc*_*ons 7

对于特殊字符:

var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";

for (var i = 0; i < document.formname.fieldname.value.length; i++) {
    if (iChars.indexOf(document.formname.fieldname.value.charAt(i)) != -1) {
        alert ("Your username has special characters. \nThese are not allowed.\n Please remove them and try again.");
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)


Sou*_*abh 5

它会帮助你......假设你有一个带有“formname”表单的表单和一个带有“txt”名称的文本框。那么您可以使用以下代码仅允许字母数字值

var checkString = document.formname.txt.value;
if (checkString != "") {
    if ( /[^A-Za-z\d]/.test(checkString)) {
        alert("Please enter only letter and numeric characters");
        document.formname.txt.focus();
        return (false);
    }
}
Run Code Online (Sandbox Code Playgroud)