【问题标题】:Input text box as positive/negative/floating number with max length 11输入文本框为最大长度为 11 的正/负/浮点数
【发布时间】:2015-04-29 08:29:50
【问题描述】:
Number : <input type="text" name="inputId" id="quantity" maxlength="11" />

当用户输入时,它应该满足以下条件 1. 值可以是正数或负数或浮动,最大长度为 11

这是我到目前为止写的内容

$(document).ready(function () {
  //called when key is pressed in textbox
  $("#inputID").keypress(function (e) {
     //if the letter is not digit then display error and don't type anything
     if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57 || e.which == 45 )) {
        //display error message
         if(e.which == 45) {
                var value = $("#quantity").val();
                if(value.indexOf('-') !=  -1)
                { 
                     var index = value.lastIndexOf('-');
                     if(index = 0){
                     return false;
                   }
                }

         }
         else
         {
             $("#quantity").val("-");   
         }       
    }
   });
});

我没有考虑“。”到目前为止,只有负号应该在索引零处。

有没有更好的方法来做到这一点,或者修改这段代码是正确的方法。

请提出建议。

【问题讨论】:

  • 在提交时进行检查会比在按键时更简单吗?
  • 这是 req.用户将无法进入
  • @evolutionxbox 对提交的检查将对用户非常不友好。从 UX 角度来看,建议进行实时错误或验证检查

标签: javascript jquery input


【解决方案1】:

可能最简单的方法是使用 HTML5 验证:

<body>
    <form>
        <input type="text" maxlength="11" pattern="\-?\d+\.?\d+" />
        <input type="submit" value="Submit" />
    </form>
</body>

https://jsfiddle.net/9g0txx68/2/

【讨论】:

    【解决方案2】:

    您的所作所为对我来说似乎是合理的,除非您愿意使用现有的众多输入掩码库之一。

    但需要考虑的一个警告是,您的代码尚未考虑到用户粘贴或拖放无效字符。此外,不要忘记考虑多个小数点,或使用逗号作为小数位指示符的语言环境。

    您还可以考虑科学指数表示法、千位分隔符、前导加号、用括号而不是连字符表示的负数、其他数字系统(如十六进制等)...

    【讨论】:

      【解决方案3】:

      我在下面的帖子中找到了答案

      Disable Text Entry in <input type="number">

      修改为最大长度

      $(document).on('keyup','#divid table tbody tr td input', function () {
                      // Remove invalid characters
                      var sanitized = $(this).val().replace(/[^-.0-9]/g, '');
                      // Remove non-leading minus signs
                      sanitized = sanitized.replace(/(.)-+/g, '$1');
                      // Remove the first point if there is more than one
                      sanitized = sanitized.replace(/\.(?=.*\.)/g, '');
                      // Update value
                      $(this).val(sanitized);
      
                      if(sanitized.indexOf(".")!= -1 && sanitized.indexOf("-")!= -1)
                      {                    
                           $(this).attr("maxlength","13");
                      }
                      else if(sanitized.indexOf(".")!= -1)
                      {
                            $(this).attr("maxlength","12");
                      }
                       else if(sanitized.indexOf("-")!= -1)
                      {
                            $(this).attr("maxlength","12");
                      }
                      else
                      {                       
                           $(this).attr("maxlength","11");
                      }
                 });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-15
        • 2012-04-05
        • 1970-01-01
        相关资源
        最近更新 更多