2
我目前使用jquery validate 1.8.1,我的目标浏览器是IE7。我在主页上有一个表单,表单元素通过AJAX动态注入。有一个下拉框管理表单中的元素,表单会根据使用此下拉框选择的内容提交不同的内容。当解除绑定验证表单时提交事件
$('some_pane').load('/remote_location.html', ...);
因此,我需要动态实例JQuery验证:
var myValidator;
myValidator = $('#myForm').validate();
myValidator.settings.submitHandler = myFormSubmitHandler;
$('#input1inMyForm').rules('add', .....)
一切都很好,当它动态地加载用于在页面加载的第一次,当表单提交,myFormSubmitHandler被称为确切地说一旦。
但是,当用户在下拉框中选择另一个值时,会出现问题,该值会动态地将另一组元素插入到窗体中,从而实例化新的验证程序。
我做了正确的实例化一个新的验证之前清理和它的作品在Firefox和Chrome
$('#myForm').data('validator', null);
$('#myForm').unbind('submit');
我已经做StackOverflow上广泛的搜索,但我不能拿出一个可行的解决方案,我可以总结关于IE和jQuery
几个关键点- 你只能解绑的绑定与jQuery.bind在IE
- 事件存储在事件属性,我可以看到,我不能REM事件覆盖之前的提交事件。每次我实例化一个新的验证器时,一个额外的onsubmit事件被附加到表单上。
这些都是清理我都试过了,但不工作的IE7对我来说
$('#myForm').removeAttr('onsubmit');
if(document.detachEvent) {
document.getElementById('myForm').detachEvent('onsubmit', myFormSubmitHandler);
}
大加赞赏。