16

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

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

这是我的文本框。

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

3 回答 3

22

字母和数字范围为(含):

  • 97 - 122 (AZ)
  • 65 - 90 (亚利桑那州)
  • 48 - 57 (0-9)

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

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

或者,使用逆逻辑:

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

更新

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

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

或者通过替换坏的东西来修复这个领域:

var stripped = value.replace(/[^A-Z0-9]+/i, '');
于 2013-09-04T08:35:16.720 回答
7

这就是您要查找的内容:

$('#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();
        }
    }
}); 

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

于 2013-09-04T08:45:39.693 回答
-1

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

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

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

于 2013-09-04T08:37:39.383 回答