如何使用jQuery远程validation依赖于表单中另一个字段的字段?

我有一个表单,我使用远程validation来检查数据库中是否已存在电子邮件地址。 然而,问题在于,在这种forms上,用户可以在几个不同的“组”之间进行选择,并且每个组具有其自己的不同的电子邮件地址集(因此相同的电子邮件可以在每个组中存在一次)。

组选择是表单上的下拉列表,电子邮件地址是具有远程validation的输入字段。 我有几个问题。 首先,我已经设置了这样的远程规则:

remote: { url: 'remote_script.php', data: { group_id: $('select.group_id').val() } } 

但是,这似乎将group_id参数静态设置为select中的第一个值。 这意味着,如果我更改选择,然后再次触发远程validation,则group_id参数不会更改

首先,如何使此参数动态化,具体取决于表单中select的值?

其次,如何在电子邮件地址字段中手动触发远程validation? 当group_id select更改时,我想在电子邮件地址字段上重新触发远程validation(不更改字段的值)。 我试过用

 $(selector).validate().element('.email_addr') 

但这似乎只触发标准validation(必需,电子邮件),而不是远程调用。

找到我问题第二部分的解决方案:

  $(".email_addr").removeData("previousValue"); 

将删除远程请求的缓存,并允许使用.element()再次触发远程请求。

因此我的代码如下:

 $("select.group_id").change(function() { $(".email_addr").removeData("previousValue"); //clear cache when changing group $("#customer_form").data('validator').element('.email_addr'); //retrigger remote call //my validator is stored in .data() on the form }); 

解决方案在这里找到: 解决方案

我的问题的第一部分最初由@Jeffery To回答

所有需要做的就是将参数的值更改为函数,而不仅仅是值。 Jeffery的例子在下面复制给未来的googlers:

 remote: { url: 'remote_script.php', data: { group_id: function () { return $('select.group_id').val(); } } } 

从远程的第二个示例看,函数(在validation期间评估)可以用于数据,因此

 remote: { url: 'remote_script.php', data: { group_id: function () { return $('select.group_id').val(); } } } 

应该管用。

对于第二个问题,您是否尝试将validation规则传递给validate()