1

我正在使用这段代码并且工作正常,但这段代码的问题是,它没有优化,例如,如果我想添加更多字符,那么我最终会得到 ifs....

if (keychar == "#" || keychar == "!" || keychar == "$" ..........)

有没有办法优化这段代码?意味着更少的 ifs(如果我需要添加更多特殊字符来防止)

 <script language="javascript" type="text/javascript">
        function check(e) {
            var keynum
            var keychar
            var numcheck
            // For Internet Explorer
            if (window.event) {
                keynum = e.keyCode
            }
            // For Netscape/Firefox/Opera
            else if (e.which) {
                keynum = e.which
            }
            keychar = String.fromCharCode(keynum)
            //List of special characters you want to restrict
            if (keychar == "'" || keychar == "a") {

                return false;
            }
            else {
                return true;
            }
        }
</script>
4

4 回答 4

4
switch(keychar) {
    case "#":
    case "!":
    case "$":
       ...
    default:
       ...
}

或者

if( keychar.match(/[#!$]/))
于 2012-04-20T03:08:46.443 回答
1

在字符串中定义要限制的字符列表,并搜索使用 输入的键indexOf

keychar = String.fromCharCode(keynum);
return "'a#!$".indexOf(keychar) == -1;
于 2012-04-20T03:08:58.077 回答
0
function check(e) {
    var event = e || window.event;
    var keychar = String.fromCharCode(event.keyCode);
    switch(keychar) {
        case 'a':
        case 'b':
        case 'c':
        /*
         * case 'd':
         * case 'e':
         * ...
         */
            return false;
        default:
            return true;
    }

}

于 2012-04-20T03:32:54.467 回答
0

如何使用jquery限制文本框中的特殊字符

 $("#txtUploadFrequency").keypress(function (e) {
    if (String.fromCharCode(e.keyCode).match(/[^0-9A-Za-z]/g)) return false;
});`enter code here`
于 2013-10-25T07:05:15.620 回答