gpt4 book ai didi

jquery - 取消绑定(bind)验证表单时无法分离 onsubmit 事件

转载 作者:行者123 更新时间:2023-12-01 05:01:05 25 4
gpt4 key购买 nike

我目前使用的是jquery validate 1.8.1,我的目标浏览器是IE7。我在主页上有一个表单,表单元素是通过 AJAX 动态注入(inject)的。有一个下拉框管理表单中的元素,表单将根据此下拉框选择的内容提交不同的内容。

$('some_pane').load('/remote_location.html', ...);

因此,我需要动态实例化 jquery validate:

var myValidator;
myValidator = $('#myForm').validate();

myValidator.settings.submitHandler = myFormSubmitHandler;
$('#input1inMyForm').rules('add', .....)

当它在页面加载时第一次动态加载时,一切都很好,并且当表单提交时,myFormSubmitHandler 被调用一次。

但是,当用户在下拉框中选择另一个值时,就会出现问题,这会动态地将另一组元素注入(inject)到表单中,从而实例化一个新的验证器。

在实例化新验证器之前我已经进行了适当的清理,并且它可以在 Firefox 和 Chrome 中运行

$('#myForm').data('validator', null);
$('#myForm').unbind('submit');

我在 StackOverflow 上进行了广泛的搜索,虽然我无法找到可行的解决方案,但我可以总结一些关于 IE 和 jQuery 的要点

  1. 您只能取消绑定(bind)通过 jQuery.bind 绑定(bind)的事件
  2. IE 中的事件存储在 events 属性中,我可以看到我无法删除以前的 onsubmit 事件。每次我实例化一个新的验证器时,都会将一个额外的 onsubmit 事件附加到表单。

这些是我尝试过的清理方法,但不适用于 IE7

$('#myForm').removeAttr('onsubmit');
if( document.detachEvent ) {
document.getElementById('myForm').detachEvent('onsubmit', myFormSubmitHandler);
}

非常感谢。

最佳答案

我通过更改提交按钮解决了这个问题

<input type="submit" .... >

改为普通按钮

<input type="button" .... >

在 IE6 中,当我重新启动新的验证器时,它不会添加额外的提交处理程序。

关于jquery - 取消绑定(bind)验证表单时无法分离 onsubmit 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com