我有一个城市的 SVG 地图,单击该地图时,会在我的表单中的 div 中创建隐藏元素。
我正在使用jQuery 验证插件 http://docs.jquery.com/Plugins/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
};
<div id="zone-selectors">
<input type="hidden" name="dummy">
</div>
但是,我不能允许该虚拟元素与表单的其余部分一起提交;我需要在表单验证后但提交表单之前将其删除。自然地,我想到使用submitHandler
选项validate()
:
// ...
submitHandler: function(form) {
$(form).find('input[name=dummy]').remove();
$(form).submit();
},
// ...
...但这似乎创建了一个无限循环,并且我的浏览器使脚本超时。我究竟做错了什么?
The submitHandler
需要调整一下,像这样:
submitHandler: function(form) {
$(form).find('input[name=dummy]').remove();
form.submit();
}
调用 jQuery.submit() http://api.jquery.com/submit/触发器再次导致验证,并且无限循环...你想调用本机.submit() https://developer.mozilla.org/en/DOM/form.submit在这里发挥作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)