在IE上提交ajax表单后,JQuery按钮单击无法正常工作

时间:2011-07-25 17:45:20

标签: jquery ajax internet-explorer

在使用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上工作时不能正常工作。任何想法为什么会发生这种情况。

谢谢, 尼丁

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用jQuery的'.live()'函数?你说按钮被插入到DOM中,因此点击功能将无法工作,因为事件只会在页面加载时受到限制。如果你使用.live(),它会绑定已存在的任何DOM元素的事件,以及将来。

答案 1 :(得分:0)

所以看起来在IE中,JQuery无法将click事件绑定到原始按钮。我更改了clickoriginalbuttons代码并使用了正常的javascript点击,它开始在IE中工作。现在我的代码是这样的:var origButton = document.getElementById($(daButton).attr(“id”)); origButton.click();问题现在解决了:)