jQuery验证:更改消息中的动态参数

时间:2013-09-03 08:58:53

标签: jquery jquery-validate

我有一个基于输入掩码的简单检查方法,定义了所有允许的char类:

<input type="text" required inputmask="254" name="test"/>

我编写了一个函数,根据输入掩码检查输入值字符,它工作正常。

现在,我想给用户一个反馈,因此我定义了我的信息:

$.validator.messages.inputmask = $.validator.format("no, no: input mask is {0}");

但是我希望有一个函数,根据掩码构建接受字符列表并将其用于反馈,即我想“操纵”参数:

$.validator.messages.inputmask = myFunc("hey dude, you are just allowed to use {0}", getChars(dont_know_which_param_to_reference_here);

这是我的JSFiddle: Input Mask Validation (所有类别,但接受大写)

正如您所看到的那样,param可以很好地检查掩码,但不能用作用户反馈。

有没有办法这样做?任何想法?

非常感谢!

2 个答案:

答案 0 :(得分:12)

引用OP:

  

“我想'操纵'参数”

无法动态地专门更改错误消息。但是,有一种解决方法。

使用the .rules('add') method,您可以使用新邮件动态覆盖您的邮件。

// dynamically change message for required rule on input with name="field"
$('input[name="field"]').rules('add', {
    messages: {
        required: "new message for field 1"
    }
});

DEMO http://jsfiddle.net/F5RUG/

演示适用于页面加载,但是,您可以随时拨打.rules('add')。如果您需要一次在多个字段上调用.rules(),则必须将其括在jQuery .each()中。

DEMO 2 http://jsfiddle.net/F5RUG/1/

答案 1 :(得分:3)

您可以定义您的消息值,就像函数和值一样,每次调用validate函数时都会更新。

以同样的方式,您可以为验证规则定义动态值。

var min_items_qt = 0

// Here we dynamically change value of `min_items_qt`

$("#yourForm").validate({
  rules: {
    items_qt: {
      min: function(){ return min_items_qt; }
    }
  },
  messages: {
    items_qt: {
      min: function(){ return "Min items qt. is: " + min_items_qt}
    }
  }
});