我有一个城市的SVG地图,当点击时,在我的窗体中创建一个div中的隐藏元素。jQuery验证:在提交之前删除验证后的元素?
我正在使用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
选项validate()
:
// ...
submitHandler: function(form) {
$(form).find('input[name=dummy]').remove();
$(form).submit();
},
// ...
...但是这似乎产生了一个无限循环,和我的浏览器超时的脚本。我究竟做错了什么?
现在表格完全不提交...?但隐藏的元素被删除,所以我知道'submitHandler'正在被调用。 – neezer 2010-09-09 15:12:08
@neezer - 表单是否有动作?或者你想通过ajax提交? – 2010-09-09 15:16:10
@nick它有一个动作。我想要一个正常的提交,而不是一个Ajax提交。 – neezer 2010-09-09 15:34:37