jquery验证规则和autoNumeric插件

时间:2011-10-05 14:02:28

标签: jquery validation range rule

我有一个验证规则,如下所示:

loanAmount:{required:true,number:true,range:[20000,500000]},

我还想为loanAmount字段进行货币格式化。所以我使用了autoNumeric插件,如下所示:

$('#loanAmount').autoNumeric({dGroup:2});

但是,使用此方法,loanAmount的范围验证无法正常工作。 jquery不是获取loanAmount的原始值,而是获取格式化的值,因此无法验证。 例如,当我输入25000时,它变为25,000并传递给jquery并且验证不能按预期工作。

有解决方法吗?

如果有人可以提供帮助,我们会很高兴。

谢谢, SAURABH

4 个答案:

答案 0 :(得分:0)

不幸的是,这是一个没有开箱即用解决方案的常规问题(我不知道)。

  1. 您可以做的是定义自己的验证方法,在执行检查之前首先“取消格式化”该值。您可以找到示例here

  2. 提交表单时,传递的值是否格式化?在这种情况下,您可以通过正则表达式定义验证规则以检查特定格式而不是纯范围。

  3. 我认为这是一个值得向插件开发者提出建议的功能:一个可选的处理程序,在验证值之前将被调用,例如,可以将值取消格式化。

    希望这有帮助,d。

答案 1 :(得分:0)

@Saurabh:我找到了解决方法。还有另一个插件可以很好地解决您遇到的问题。您只需在以下链接下载即可:

https://www.customd.com/articles/14/jquery-number-format-redux
文件也在那里......

希望它有所帮助。

答案 2 :(得分:0)

我今天遇到了同样的问题,这是我的工作方式,首先,我定义了新的自定义规则(为了钱):

$.validator.addMethod('moneyMinMax', function(value, element, params) {
    return this.optional(element) || (priceToNumber(value) >= params[0] && priceToNumber(value) <= params[1])
}, 'Please submit a value between {0} € & {1} €');

然后:

$myForm.validate({
    rules: {
        field_integer_classic: {
            required: true,
            max: 22,
            min: 2
        },
        field_money: {
            required: true,
            // call custom method added before with array [min, max]
            moneyMinMax: [200, 6000],
        },

我有一个简单的函数priceToNumber,用于清理货币值周围的格式。如果需要,您可以使用AutoNumeric中的getNumericString()

类似的东西:

 var value = AutoNumeric.getAutoNumericElement(element).getNumericString();
验证器方法中的

答案 3 :(得分:0)

旧问题,但是如果有人发现此问题,则可以通过添加自定义验证来解决。您可以:

  1. 获取自动数字对象
  2. 获取anElement(自动数字元素)的原始值

这里是一个示例,该示例如何为使用AutoNumeric的货币格式输入添加最小值的验证

# custom_validation.coffee

$.validator.addMethod 'moneyMin', (value, element, minValue) ->
  anElement = AutoNumeric.getAutoNumericElement(element)
  amount = Number(anElement.rawValue)
  this.optional(element) || minValue < amount