在使用JQuery ajax提交表单后,我在点击按钮时遇到了一些麻烦。这是我的html的样子:
<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只是不会触发原始按钮的单击。我已经检查过所有对按钮的引用都没问题。我也在这里的论坛中搜索并找到了现场/代表等,但不确定它们是否适用于我,因为我们的按钮始终存在,它们不会通过。 ajax - 实际上,没有任何东西通过渲染。第一次加载后的ajax。因此,不确定为什么按钮单击在IE上工作时不能正常工作。任何想法为什么会发生这种情况。
谢谢, 尼丁
答案 0 :(得分:0)
您是否尝试过使用jQuery的'.live()'函数?你说按钮被插入到DOM中,因此点击功能将无法工作,因为事件只会在页面加载时受到限制。如果你使用.live(),它会绑定已存在的任何DOM元素的事件,以及将来。
答案 1 :(得分:0)
所以看起来在IE中,JQuery无法将click事件绑定到原始按钮。我更改了clickoriginalbuttons代码并使用了正常的javascript点击,它开始在IE中工作。现在我的代码是这样的:var origButton = document.getElementById($(daButton).attr(“id”)); origButton.click();问题现在解决了:)