我在使用jQuery ajax提交表单后点击按钮有点麻烦。这里是我的HTML是什么样子:jQuery按钮点击不工作后,在IE浏览器上提交表单提交
<div>
<!-- normal HTML buttons that are overridden by JQuery for styling purposes -->
<!-- Here, on render, the HTML button is hidden and a similar JQuery button is shown on the DOM -->
</div>
<div>
<!--- Stuff generated by a third-party tool -->
</div>
<div>
<!--- Our form loaded using JQuery -->
</div>
上面提到的按钮实际上是由第三方工具放入DOM和网页渲染,我们接管他们通过隐藏按钮和生产JQuery的按钮,然后模仿原始按钮的行为。所以,基本上,用户可以在表单中填写第三方的东西,填写我们的表单,然后点击JQuery按钮,我们首先将我们的表单提交给服务器,然后点击原始按钮,这样第三方工具可以提交它自己的东西。下面是我们的提交表单代码:
clickoriginalbutton = function(passedButton) {
$(passedButton).click();
},
//save our data
submitourform = function(buttonreference) {
$('#our_form').ajaxForm(options);
$('*').button('disable');
$('#our_form').ajaxSubmit({
iframe: true,
dataType: 'json',
success: function(data){
if (data.status == 'success') {
clickoriginalbutton (getOrigButton(buttonreference));
};
}
});
}
正如你可以看到,原来的按钮被点击在保存表单的成功。按钮点击在FF中正常工作,但在IE中失败。我可以看到我们的表单已经提交并且成功回来了,但是IE并没有触发原始按钮的点击。我已经检查过,所有对按钮的引用都很好。我也在这里的论坛上搜索并找到了live/delegate等,但不知道他们是否会为我工作,因为我们的按钮总是在那里,他们不是通过渲染。 ajax - 事实上,没有什么是通过渲染。 ajax在第一次加载之后。所以,不知道为什么按钮点击在FF上工作时不能在IE上工作。任何想法为什么会发生这种情况。
感谢, 尼廷
Clickoriginalbutton的内容是什么? jQuery有一个“触发器”方法,可以让你引发事件,这将调用对象的附加处理程序。如果一个处理程序没有被触发,那么它就不会被附加到事件上,所以你想查看处理程序是否被清除了。 – enamrik
clickoriginalbutton的内容与post相同 - 它只是在传递的按钮上调用click()函数。 clickoriginalbutton也被称为没有Ajax提交的地方,在这些情况下,它在IE上也可以很好地工作;只有当我提交我们的表单并调用clickorignal按钮时,该按钮才不会被点击。如果我从submitourourform函数中删除ajaxSubmit调用,按钮会被点击罚款。另外,尽管我的帖子显示了使用Form插件,但我也尝试了使用相同结果的JQuery .ajax - 按钮只是不会在IE中单击。 – legendofawesomeness
因此,它看起来像在IE中JQuery不能将点击事件绑定到原始按钮。我改变了clickoriginalbuttons代码,并使用正常的JavaScript点击,并开始在IE中工作。现在我的代码是这样的:var origButton = document.getElementById($(daButton).attr(“id”)); origButton.click();问题现在解决:) – legendofawesomeness