如何使这段代码更有用(防止textarea中的特殊字符)

时间:2012-04-20 03:07:32

标签: javascript jquery

我正在使用此代码并且工作正常,但此代码的问题是,它没有进行优化,例如,如果我想添加更多的字符,那么我最终会有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 个答案:

答案 0 :(得分:4)

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

OR

if( keychar.match(/[#!$]/))

答案 1 :(得分:1)

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

keychar = String.fromCharCode(keynum);
return "'a#!$".indexOf(keychar) == -1;

答案 2 :(得分: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;
    }

}

答案 3 :(得分:0)

如何使用jquery

限制文本框中的特殊字符
 $("#txtUploadFrequency").keypress(function (e) {
    if (String.fromCharCode(e.keyCode).match(/[^0-9A-Za-z]/g)) return false;
});`enter code here`