添加,删除,然后使用Jquery Validate插件重新添加自定义方法

时间:2012-04-24 13:51:53

标签: jquery jquery-validate

我在重新添加使用Jquery Validation插件创建的自定义方法时遇到问题。 我在jsfiddle上发布了一个简单的例子,以显示我的表单基本上做了什么... 用户有一个表单,他们从文本字段中选择一个学校(实际上是自动完成)。 表单有一个自定义规则,以便通过.blur事件设置的school_id(实际上自动完成设置了school_id,但这只需要一个简单的例子)。

现在他们可能会转而从常规下拉菜单中选择学校/如果这是他们喜欢的选择(通过点击链接)。所以我删除了school_id验证规则,并为下拉列表添加了验证规则。但是,如果用户切换回旧版本,我似乎无法重新添加自定义自动填充规则。

我在这里的代码的具体部分在这里:

$("#school_autocomplete").rules("add", {
  school_id_required: "",
  messages: {
    required: "* Please type and pick a school"
  }
});  

这是一个简单的功能实例:
http://jsfiddle.net/armyofda12mnkeys/4jsgQ/6/

尝试去那里^,然后立即点击提交,(你得到一个错误,这是正确的)。 然后单击“显示DropDown”,然后单击“提交”(您将获得新添加的错误,这是正确的), 然后单击“显示文本(自动填充)”,然后单击“提交”。您现在收到“警告:没有为school_autocomplete定义消息”,这是不正确的。

通常在 school_id_required:“”行上,你会有 required:true “regex”:“^ some。+ regex $ “我相信......但是对于自定义规则,当我传递”“,false / true,”blah“作为测试值时,它似乎无法正常工作。我看到一个例子,其中有人使用像 school_id_required:[“someParam”] 这样的东西,所以我尝试给它一个伪值来传递一个数组也无济于事。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

你可以尝试这个,这对我有用,你将使用设置对象,然后分配新的规则和消息:)

var settings = $("#school_autocomplete").validate().settings;

$.extend(settings, {
    rules: _Rules,
    messages: _Messages
});

var validated = $('#school_autocomplete').valid();
祝你好运。