jQuery Validation Plugin:使用逗号作为小数分隔符验证十进制数

时间:2014-02-19 11:06:14

标签: javascript jquery validation

HTML:

<form id="myform">
    <label for="field">Required, decimal number:</label>
    <input class="left" id="field" name="field">
    <br/>
    <input type="submit" value="Validate!">
</form>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://jquery.bassistance.de/validate/jquery.validate.js"></script>
<script src="http://jquery.bassistance.de/validate/additional-methods.js"></script>
<script>

JS:

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

这需要字段“字段”中的有效数字。但是,当使用逗号作为小数分隔符时,它不起作用。例如:10,25不被视为有效数字。

我从the validation plugin获取此示例 您还可以看到实时JSFiddle here.

我想在验证之前我必须将输入(从逗号转换为点小数分隔符),但是如何?

1 个答案:

答案 0 :(得分:19)

您可以使用模式规则传递自定义正则表达式模式,如

$("#myform").validate({
    //for debug only
    debug: true,
    rules: {
        field: {
            required: true,
            pattern: /^(\d+|\d+,\d{1,2})$/
        }
    },
    messages: {
        field: {
            pattern: 'Please use the proper pattern'
        }
    }
});

演示:Fiddle


如果是重复模式,请创建自定义验证规则

jQuery.validator.addMethod("mynumber", function (value, element) {
    return this.optional(element) || /^(\d+|\d+,\d{1,2})$/.test(value);
}, "Please specify the correct number format");

$("#myform").validate({
    //for debug only
    debug: true,
    rules: {
        field: {
            required: true,
            mynumber: true
        }
    }
});

演示:Fiddle