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(); }