输入文本框为正/负/浮点数,最大长度为11

时间:2015-04-29 08:29:51

标签: javascript jquery input

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

我没有考虑&#34;。&#34;截至目前,只有负号应该在零指数处。

有没有更好的方法来执行此操作,或者修改此代码将是正确的方法。

请建议。

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

除非您愿意使用其中一个可用的输入掩码库,否则您的操作对我来说似乎是合理的。

有一点需要注意的是,您的代码尚未考虑,是用户粘贴还是拖放无效字符。另外,不要忘记考虑使用逗号作为小数位指示符的多个小数点或区域设置。

您可能还会考虑科学指数表示法,千位分隔符,前导加号,用括号而不是连字符表示的否定性,其他数字系统(如十六进制等)......如您认为合适。

答案 2 :(得分:0)

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

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