0

我无法重新添加使用 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/

尝试去那里^,然后立即单击提交,(你得到一个错误,这是正确的)。然后点击'Show DropDown',点击Submit(你得到新添加的错误,这是正确的),然后点击'Show Text (Autocomplete)',点击Submit。您现在收到“警告:没有为 school_autocomplete 定义的消息”,这是不正确的。

通常在那个school_id_required: ""行上,你会有类似required: true"regex": "^some.+regex$"我相信...但是对于自定义规则,它似乎不起作用当我通过“”,假/真,“等等”作为要测试的值时正确。我看到一个例子,有人使用了类似 school_id_required: ["someParam"]的东西,所以我尝试给它一个假值以通过数组传递也无济于事。

谢谢你的帮助!

4

1 回答 1

1

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

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

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

var validated = $('#school_autocomplete').valid();

祝你好运。

于 2012-04-24T16:53:35.340 回答