【问题标题】:Price field validation using javascript either jquery?使用javascript或jquery进行价格字段验证?
【发布时间】:2014-02-01 06:04:38
【问题描述】:

我的表单中有一个价格字段,我应该只允许十进制或浮点数,而不是字符和我的价格字段中的任何其他特殊和空格。

我怎么能得到它?

这是我的代码:

    $("#foo").blur(function() {
    var price = $("#foo").value;
    var validatePrice = function(price) {
   return /^(\d*([.,](?=\d{3}))?\d+)+((?!\2)[.,]\d\d)?$/.test(price);
}
    alert(validatePrice(price)); // False
});

Fiddle

【问题讨论】:

标签: javascript jquery


【解决方案1】:

首先,这是更正后的代码:

$("#foo").blur(function() {
    var price = $("#foo").val();
    var validatePrice = function(price) {
      return /^(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(price);
    }
    alert(validatePrice(price)); // False
});

您需要单独测试空值(未定义)。另外,如果你想允许负值使用:

/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(price);

这个正则表达式是从 Jörn Zaefferer 的 JQuery Validate 插件中提取的。我建议您考虑使用该插件,因为它包含许多其他功能。

【讨论】:

    【解决方案2】:

    在 HTML5 中,如果浏览器支持它,它会原生地 supports checking validity

    $("#foo").blur(function(){
        alert(this.checkValidity());
    });
    

    演示:http://jsfiddle.net/DerekL/6djkS/


    如果浏览器不支持,你总是可以回退到旧的丑陋的正则表达式。

    基于 JSON 中使用的 Number 定义:


    (来源:json.org

    (去掉了否定的科学记数法部分。)

    var regex = /^\d*(.\d{2})?$/;
    regex.test(price);   //Boolean
    

    【讨论】:

      【解决方案3】:

      对于https://stackoverflow.com/a/21494842/1885344,正确的正则表达式是

      var regex = /^\d*(\.\d{2})?$/;
      regex.test(price);   //Boolean
      

      现在,它允许所有字符作为小数点分隔符,而它应该只是点 (.) 字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-04
        相关资源
        最近更新 更多