【发布时间】:2018-08-20 20:06:39
【问题描述】:
我有一个城市的 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>
但是,我不能允许该虚拟元素与表单的其余部分一起提交;我需要在表单经过验证但在提交表单之前将其删除。当然,我想为validate() 使用submitHandler 选项:
// ...
submitHandler: function(form) {
$(form).find('input[name=dummy]').remove();
$(form).submit();
},
// ...
...但这似乎创建了一个无限循环,并且我的浏览器使脚本超时。我做错了什么?
【问题讨论】:
标签: javascript jquery jquery-validate