2011-07-25 49 views
0

我在使用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上工作。任何想法爲什麼會發生這種情況。

感謝, 尼廷

+0

Clickoriginalbutton的內容是什麼? jQuery有一個「觸發器」方法,可以讓你引發事件,這將調用對象的附加處理程序。如果一個處理程序沒有被觸發,那麼它就不會被附加到事件上,所以你想查看處理程序是否被清除了。 – enamrik

+0

clickoriginalbutton的內容與post相同 - 它只是在傳遞的按鈕上調用click()函數。 clickoriginalbutton也被稱爲沒有Ajax提交的地方,在這些情況下,它在IE上也可以很好地工作;只有當我提交我們的表單並調用clickorignal按鈕時,該按鈕纔不會被點擊。如果我從submitourourform函數中刪除ajaxSubmit調用,按鈕會被點擊罰款。另外,儘管我的帖子顯示了使用Form插件,但我也嘗試了使用相同結果的JQuery .ajax - 按鈕只是不會在IE中單擊。 – legendofawesomeness

+0

因此,它看起來像在IE中JQuery不能將點擊事件綁定到原始按鈕。我改變了clickoriginalbuttons代碼,並使用正常的JavaScript點擊,並開始在IE中工作。現在我的代碼是這樣的:var origButton = document.getElementById($(daButton).attr(「id」)); origButton.click();問題現在解決:) – legendofawesomeness

回答

0

所以它看起來像在IE中JQuery不能將點擊事件綁定到原始按鈕。我改變了clickoriginalbuttons代碼,並使用正常的JavaScript點擊,並開始在IE中工作。現在我的代碼是這樣的:var origButton = document.getElementById($(daButton).attr(「id」)); origButton.click();問題現在解決:)

0

您是否嘗試過使用jQuery的 '.live()' 函數?你說這些按鈕被插入到DOM中,因此點擊功能將不起作用,因爲事件只會在頁面加載時被綁定。如果使用.live(),它將爲已經存在且將來存在的任何DOM元素綁定事件。

+0

嗨傑米,感謝您的答案。在發佈之前,我給了live()一個嘗試,並且不適合我 - 因爲這些按鈕沒有被動態插入,它們在頁面加載時不會改變。無論如何,根據我對帖子的最後評論,我通過使用document.getElementById(mybuttonid).click()而不是Jquery單擊來解決問題。再次感謝。 – legendofawesomeness

+0

不用擔心 - 你可能想自己發表一個答案,並接受它只是爲了制止混亂,很高興你想出了它:)。 – Jamie

+0

當然,只是等待鎖定期(根據我的特權)才能結束。 :) – legendofawesomeness

相關問題