使用jquery拒绝在文本框中输入特殊字符

时间:2010-06-15 07:29:45

标签: jquery

如何拒绝用户使用jquery在文本框中输入特殊字符?

special characters are like \ / ? * [ or ]

4 个答案:

答案 0 :(得分:1)

我认为你只能使用javascript来实现这个目标

在文本框的KeyPress事件中调用以下函数

function AlphaNumericOnly(e,isAlphaonly)
{
   // copyright 1999 Idocs, Inc. http://www.idocs.com
   var key = [e.keyCode||e.which];

   var keychar = String.fromCharCode([e.keyCode||e.which]);
   keychar = keychar.toLowerCase();

   if(isAlphaonly=='true')
         checkString="abcdefghijklmnopqrstuvwxyz";
   else 
         checkString="abcdefghijklmnopqrstuvwxyz0123456789";

   if ((key==null) || (key==0) || (key==8) || 
         (key==9) || (key==13) || (key==27) )
        return true;
   else if (((checkString).indexOf(keychar) > -1))
        return true;
   else
        return false;
}

答案 1 :(得分:1)

使用jQuery:

    $(function () {
        //Add handler to input where the id ends with txtName 
        $("input[id$='txtUrl']").keypress(function (event) {
            if (!IsUrlReady(event)) {
                event.preventDefault();
            }
        });
    });

    function IsUrlReady(e) {
        var key = [e.keyCode || e.which];
        var keychar = String.fromCharCode([e.keyCode || e.which]).toLowerCase();

        // 8 = backspace
        // 9 = tab
        //13 = enter key
        //35 = end | #
        //36 = home | $
        //37 - (direction) left | %
        //38 - (direction) up | &
        //39 - (direction) right | '
        //40 - (direction) down | (

        if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27) || (key >= 35 && key <= 40)) {
            var pattern = new RegExp("['#$%&\(]");
            return !pattern.test(keychar);
        } else {
            var pattern = new RegExp("[A-Za-z0-9_-]");
            return pattern.test(keychar);
        }
    }

答案 2 :(得分:0)

检查keydownkeyup事件处理程序中的密钥代码。

$('input').bind('keydown', function(e){
   if(e.shiftKey){
     switch(e.which){
           case 55:{   // slash
                return(false);
           }
           case 187:{   // *
                return(false);
           }
           // and so forth
     }
   }
});

答案 3 :(得分:0)

就像@Reigel指出的那样,通过简单地粘贴内容就可以轻松地绕过键盘输入,所以我觉得你最好使用像jQuery Validation plugin这样的东西。

它具有功能,例如自定义验证规则,因此您可以根据自己的自定义规则(显然)进行验证。下面是一个示例,说明当监视字段的内容发生变化时(而不是等到表单提交之后),如何通过键入或粘贴来获取验证触发器:

$("#myTextField").change(function() {
    if(!$(this).valid()) {
        /* do something, show an alert, or whatever you need it to do */
    }
});

我不会详细介绍如何使用这个插件,因为SO已经充满了例子,但我希望它能让你朝着正确的方向前进。