如何使用javascript或jquery限制字段中输入的字符数?

如何使用javascript或jquery限制字段中输入的字符数?,javascript,jquery,asp.net,validation,Javascript,Jquery,Asp.net,Validation,我为输入文本字段编写了一个验证代码,它只接受数字和一些控制键。我接受了StackOverflow的帮助:),所以我再次来到这里接受帮助。我的验证码是 $("#txtLevel1Year").keydown(function(event) { // Allow only backspace,delete,left arrow,right arraow and Tab if ( event.keyCode ==

我为输入文本字段编写了一个验证代码,它只接受数字和一些控制键。我接受了StackOverflow的帮助:),所以我再次来到这里接受帮助。我的验证码是

 $("#txtLevel1Year").keydown(function(event)
            {
                // Allow only backspace,delete,left arrow,right arraow and Tab
                if ( event.keyCode == 46 
                    || event.keyCode == 8 
                    || event.keyCode == 37 
                    || event.keyCode == 39 
                    || event.keyCode == 9)
                    {
                    // let it happen, don't do anything
                    }
                    else {
                        // Ensure that it is a number and stop the keypress
                        if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode <96 ||event.keyCode > 105) ) {
                            event.preventDefault(); 
                        }   
                    }
            });
$(“#txtLevel1Year”).keydown(函数(事件)
{
//仅允许退格、删除、左箭头、右箭头和制表符
如果(event.keyCode==46
||event.keyCode==8
||event.keyCode==37
||event.keyCode==39
||event.keyCode==9)
{
//让它发生吧,什么都不要做
}
否则{
//确保它是一个数字并停止按键
如果((event.keyCode<48 | | event.keyCode>57)和&(event.keyCode 105)){
event.preventDefault();
}   
}
});
现在让我告诉你我在寻找什么,首先,我想限制这个字段正好取4位数字。不多不少,第二个是关于优化。 我希望进行此验证的文本字段为


在这里,我可以重复验证代码4次,通过获取四个不同的ID来完成这项工作,尽管验证是完全相同的。我能做些什么来消除这种重复吗?如果你不清楚我的问题,请告诉我。 提前告诉你们所有人。
这是这个问题的编辑部分,我通过创建一个CSS类并在我放置全年文本框的div中调用它,实现了优化的目标。但我的限制是精确到4位数,这还没有解决。请帮帮我

好的,首先要对所有四个字段使用验证代码,您可以使用类选择器(在为所有元素指定CALS之后):


在这里摆弄:

我认为您的验证是有效的。诀窍是为所有textbox添加一个类。说类名是

.validateTB
然后按如下方式修改脚本

$(".validateTB").keydown(function(event)
        {
            // Allow only backspace,delete,left arrow,right arraow and Tab
            if ( event.keyCode == 46 
                || event.keyCode == 8 
                || event.keyCode == 37 
                || event.keyCode == 39 
                || event.keyCode == 9)
                {
                // let it happen, don't do anything
                }
                else {
                    // Ensure that it is a number and stop the keypress
                    if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode   <96 ||event.keyCode > 105) ) {
                        event.preventDefault(); 
                    }   
                }
        });
$(.validateTB”).keydown(函数(事件)
{
//仅允许退格、删除、左箭头、右箭头和制表符
如果(event.keyCode==46
||event.keyCode==8
||event.keyCode==37
||event.keyCode==39
||event.keyCode==9)
{
//让它发生吧,什么都不要做
}
否则{
//确保它是一个数字并停止按键
如果((event.keyCode<48 | | event.keyCode>57)和&(event.keyCode 105)){
event.preventDefault();
}   
}
});
请注意,脚本中只更改了选择器。

尝试以下操作:(不闪烁,也不允许复制粘贴):


请记住,您可以将HTML中的
设置为问题的一半的简单解决方案。但是,这只会阻止浏览器用户输入超过4个字符,但您可以通过编程避免,通过调用一些设置较长值的JS函数。

对于类似的验证,请记住使用复制和粘贴来测试字段-使用键盘快捷键和鼠标右键单击。请告诉我如何实现这一点。我将所有文本框放在一个div中,在div处我调用了类,它工作了。您的最后一部分不工作,我做了一些修改,比如$(“.validateYearTextBox”).keydown(函数(事件){//相同的代码});然后通过替换适当的类名粘贴代码。但它不工作这里是一个工作小提琴,有两个小错误-复制/粘贴代码再次我提出一个新的问题,请回答这个在那里,这部分是太梅西
 $(".validate").keyup(function(event){
         var val = $(this).val();
         if (val.length > 4){
            alert ("Max length is 4");
            val = val.substring(0, val.length - 1);
            $(this).val(val);
            $(this).focus();
            return false;
          }
   });
.validateTB
$(".validateTB").keydown(function(event)
        {
            // Allow only backspace,delete,left arrow,right arraow and Tab
            if ( event.keyCode == 46 
                || event.keyCode == 8 
                || event.keyCode == 37 
                || event.keyCode == 39 
                || event.keyCode == 9)
                {
                // let it happen, don't do anything
                }
                else {
                    // Ensure that it is a number and stop the keypress
                    if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode   <96 ||event.keyCode > 105) ) {
                        event.preventDefault(); 
                    }   
                }
        });
$(".validate").keyup(function(event) {
    var val = $(this).val();
    if (val.length > 5) {
        val = val.substring(0, 5);
        $(this).val(val);
        return false;
    }
}).keypress(function(event) {
    if ($(this).val().length > 4) {
        return false;
    }
});