我在使用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