jQuery验证:在提交之前删除验证后的元素?

时间:2010-09-09 15:04:24

标签: javascript jquery jquery-validate

我有一个城市的SVG地图,点击后会在我的表单中的div中创建隐藏元素。

我正在使用jQuery Validation Plugin来验证我的表单。

为了确保用户点击了地图的某个区域,我想在正常的隐藏元素所在的位置创建一个虚拟隐藏元素,并将验证规则放在其中。我编写了自己的验证规则来检查隐藏元素的数量(表示用户已在地图上的某处单击)。这条规则是这样的:

$.validator.methods.zones = function (value, element, param) {
   return ($('#search_form #zone-selectors input').length > 1); // 1 instead of 0 to account for the dummy element
};

<div id="zone-selectors">
  <input type="hidden" name="dummy">
</div>

但是,我不能允许将虚拟元素与表格的其余部分一起提交;我需要在表单验证后删除它,但在提交表单之前。当然,我想使用submitHandler的{​​{1}}选项:

validate()

...但这似乎创建了一个无限循环,我的浏览器超时了脚本。我做错了什么?

2 个答案:

答案 0 :(得分:1)

submitHandler需要调整,如下所示:

submitHandler: function(form) {
   $(form).find('input[name=dummy]').remove();
   form.submit();
}

调用jQuery .submit()触发器会再次导致验证,并且无限循环...您想在此处调用本机.submit()函数。

答案 1 :(得分:0)

当上述答案没有时,这似乎对我有用。可能与jQuery和jQuery Validation版本有关。

submitHandler: function(form) {
   $('input[name=dummy]', form).remove();
   form.submit();
}