【问题标题】:validating a sting for decimal input Javascript [duplicate]验证十进制输入Javascript的字符串[重复]
【发布时间】:2014-09-18 10:51:17
【问题描述】:

我想验证用户输入是否正确,例如用户可以输入 -123.4123.4 等值,但不能输入 --123.4-.234..234 这是我到目前为止所做的,但它不能正常工作

var input  = control.value;
       var indexM = input.match((/-/g) || []).length;
       var indexD = input.match((/./g) || []).length;
        if(indexM > 1 || indexD >1  )
         {
        control.value="";
        alert('Invalid Value')
         }

【问题讨论】:

    标签: javascript


    【解决方案1】:

    您可以使用正则表达式来验证十进制数

    var input  = control.value;
    var exp = /^\-?\d*\.?\d*$/;
    
    if(!exp.test(input))
    {
      control.value="";
      alert('Invalid Value')
    }
    

    【讨论】:

    • 无法使用 this 验证多个点。因为仍然允许该字符。对吗?
    • 错了。它将验证多个点。你可以检查一下
    • 我正在检查,它不适合我。我也发布了一条回复,但进一步检查似乎也是错误的。
    【解决方案2】:

    如果可以接受,您可以这样做,

    $(document).ready(function () {
    $('[id$=txt1]').numeric({ allow: "." });
    $('[id$=txt1]').numeric();
     });
    

    其中 txt1 是用户输入数据的文本框的客户端实例名称。

    错误答案,删除无效。不能使用同一个会允许多个“。”并且不允许负数

    【讨论】:

      【解决方案3】:

      您应该在每次点击时检查用户输入。

      例如:如果输入字段 id='MyInputField" 你应该使用下面的代码

      var decimalsRestrictions = function (field) {
      $(field).bind("propertychange input", function (e) {
          var resVal = twoDecimalsRestrictions(field.val());
          if (field.val() != resVal) {
              field.val(resVal);
          }
        });
      };
      
       var twoDecimalsRestrictions = function (num) {
         var parts;
         if (num.indexOf(".") !== -1) {
            parts = num.split(".");
            if (parts[1].length > 2) {
                return num.substr(0, num.length - 1);
            }
        }
        return num;
      };
      
      decimalsRestrictions("#MyInputField");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-07
        • 1970-01-01
        • 2016-11-15
        • 2011-01-30
        • 1970-01-01
        • 2014-06-01
        • 2012-09-21
        • 2012-07-10
        相关资源
        最近更新 更多