jQuery 当长度为0时,如何防止用户在文本框中输入特殊字符?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18608954/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 22:02:26  来源:igfitidea点击:

How to prevent user from entering special characters in text box when length is 0?

jqueryhtml

提问by Bittu

I have the following code which prevents user from entering space when the length is 0. Now, how can I prevent user from entering all special characters(anything other than a-z A-Z 0-9) when the length is 0?

我有以下代码可以防止用户在长度为 0 时输入空格。现在,当长度为 0 时,如何防止用户输入所有特殊字符(az AZ 0-9 以外的任何字符)?

$('#DivisionName').bind('keypress', function(e) {
    if($('#DivisionName').val().length == 0){
        if (e.which == 32){//space bar
            e.preventDefault();
        }
    }
}); 

This is my text box.

这是我的文本框。

<input type="text" id="DivisionName" />

回答by Ja?ck

The letter and digit ranges are (inclusive):

字母和数字范围是(包括):

  • 97 - 122 (a-z)
  • 65 - 90 (A-Z)
  • 48 - 57 (0-9)
  • 97 - 122 (az)
  • 65 - 90 (AZ)
  • 48 - 57 (0-9)

This is what you compare e.whichagainst.

这就是你比较的e.which对象。

if (e.which < 48 || 
    (e.which > 57 && e.which < 65) || 
    (e.which > 90 && e.which < 97) ||
    e.which > 122) {
    e.preventDefault();
}

Or, using inverse logic:

或者,使用逆逻辑:

var valid = (e.which >= 48 && e.which <= 57) || (e.which >= 65 && e.which <= 90) || (e.which >= 97 && e.which <= 122);
if (!valid) {
    e.preventDefault();
}

Update

更新

Even so, you may still wish to validate the field contents as a whole using a regular expression:

即便如此,您可能仍然希望使用正则表达式来验证整个字段内容:

if (/^[A-Z0-9]+$/i.test(value)) {
    // it looks okay now
}

Or fix the field by replacing the bad stuff:

或者通过替换坏的东西来修复该字段:

var stripped = value.replace(/[^A-Z0-9]+/i, '');

回答by Scheintod

This is what you are looking for:

这就是你要找的:

$('#DivisionName').bind('keypress', function(e) {

    if($('#DivisionName').val().length == 0){
        var k = e.which;
        var ok = k >= 65 && k <= 90 || // A-Z
            k >= 97 && k <= 122 || // a-z
            k >= 48 && k <= 57; // 0-9

        if (!ok){
            e.preventDefault();
        }
    }
}); 

or see here: http://jsfiddle.net/D4dcg/

或在这里查看:http: //jsfiddle.net/D4dcg/

回答by Boranas

You can use a regex to validate the string. Something like ^[a-zA-z0-9].*

您可以使用正则表达式来验证字符串。就像是^[a-zA-z0-9].*

Here is an article about testing a regex in javascript : http://www.w3schools.com/jsref/jsref_regexp_test.asp

这是一篇关于在 javascript 中测试正则表达式的文章:http: //www.w3schools.com/jsref/jsref_regexp_test.asp

And you can even bind a change event and not a keypress.

您甚至可以绑定更改事件而不是按键。