【问题标题】:How can I restrict number of character input in a field with javascript or jquery?如何使用 javascript 或 jquery 限制字段中的字符输入数?
【发布时间】:2011-07-22 11:07:32
【问题描述】:

我为输入文本字段编写了一个验证代码,它只需要数字和一些控制键。我得到了 stackoverclow 的帮助 :),所以我又来这里寻求帮助了。我的验证码是

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

现在让我告诉你我在寻找什么,首先,我想限制这个字段恰好取 4 位数字。不少于不多,第二个是关于优化。 我希望此验证起作用的文本字段是(是)

<asp:TextBox runat="server" ID="txtLevel1Year" Width="50px" TabIndex="13"></asp:TextBox>  
                        <asp:TextBox runat="server" ID="txtLevel2Year" Width="50px" TabIndex="17"></asp:TextBox>  
                        <asp:TextBox runat="server" ID="txtLevel3Year" Width="50px" TabIndex="21"></asp:TextBox>  
                        <asp:TextBox runat="server" ID="txtLevel4Year" Width="50px" TabIndex="25"></asp:TextBox>  

在这里,我可以通过抓取四个不同的 id 来重复验证代码 4 次来完成这项工作,尽管验证是完全相同的。我可以做任何可以消除这种重复的事情吗?如果您不清楚我的问题,请告诉我。 提前谢谢大家。 这是这个问题的编辑部分,我通过创建一个 CSS 类并在我放置全年文本框的 div 中调用它来实现优化的目标。但是我的限制使它恰好是 4 位数还有待解决。请帮我。

【问题讨论】:

标签: javascript jquery asp.net validation


【解决方案1】:

我假设您的验证有效。诀窍是为所有文本框添加一个类。说类名是

.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(); 
                    }   
                }
        });

请注意,脚本中仅更改了选择器。

【讨论】:

  • 我把所有的文本框都放在了一个 div 中,在 div 中我调用了这个类并且它起作用了。
【解决方案2】:

请记住,您可以在 HTML 中设置 &lt;input maxlength="4"&gt; 作为解决一半问题的简单方法。但是,这只会阻止浏览器用户输入超过 4 个字符,但您可以通过调用一些设置更长值的 JS 函数以编程方式避免它。

【讨论】:

    【解决方案3】:

    试试这个:(不闪烁,不允许复制粘贴):

    $(".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;
        }
    });
    

    http://jsfiddle.net/xEMzx/

    【讨论】:

      【解决方案4】:

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

      <asp:TextBox runat="server" class='validate'
      
       $(".validate").keydown(function(event)
      

      要检查长度,您可以使用 keyup 事件(根据我的经验,这更适合此任务)

       $(".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;
                }
         });
      

      在这里提琴:http://jsfiddle.net/a5BJX/

      【讨论】:

      • 你的最后一部分不工作,我做了他修改像 $(".validateYearTextBox").keydown(function(event) { //相同的代码 });然后通过替换适当的类名来粘贴您的代码。但它不工作
      • 这是一个工作小提琴,有两个小错误 - 再次复制/粘贴代码jsfiddle.net/a5BJX
      • 我提出一个新问题,请在那边回答这个问题,这部分太混乱了
      猜你喜欢
      • 2012-01-29
      • 1970-01-01
      • 2015-08-16
      • 1970-01-01
      • 2015-09-20
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多