jQuery仅验证十进制数

时间:2016-03-15 23:35:04

标签: javascript jquery regex

有谁知道如何验证价格格式,如下所示

1.00 1200.00,但我也想允许1和1200

$.validator.addMethod('decimal', function(value, element) {
        return this.optional(element) || /^[0-9]+\.\d{1,3}$/.test(value);
    }, "Please enter a correct number, format 0.00");

jQuery.validator.setDefaults({
        debug: true,
        success: "valid"
    });

    $( "#myform" ).validate({
        rules: {
            field: {
                required: true,
                decimal: true
            }
        }
    });

^我找到了这段代码,但它仍然允许使用逗号。基本上我正在寻找像没有逗号的数字。

所以基本上只想允许数字和可选的小数。

有什么建议吗?

更新:所以上面的工作,但它强制要求十进制。如何使这个可选,所以我可以做1200或1200.00?或者也许有一种方法可以将1200转换为1200.00?

1 个答案:

答案 0 :(得分:1)

我提出的解决问题的建议是:

$.validator.addMethod('decimal', function(value, element) {
  return this.optional(element) || /^((\d+(\\.\d{0,2})?)|((\d*(\.\d{1,2}))))$/.test(value);
}, "Please enter a correct number, format 0.00");


$(function () {
  $("#frm").on('submit', function(e) {
    e.preventDefault();
    $('#log').text('Form is valid? ' + $(this).valid().toString());
  });

  $("#frm").validate({
    rules: {
      price: {
        required: true,
        decimal: true
      }
    }
  });
});
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.0/jquery.validate.min.js"></script>

<form id="frm">
    Money: <input name="price" id="price" type="text"><br>
    <input id="submit" type="submit" value="Submit">
</form>
<p id="log"></p>