jQueryvalidation:在提交之前删除validation后的元素?

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

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

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

$.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 }; 

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

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

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

submitHandler需要调整,如下所示:

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

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

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

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