2011-04-06 54 views
0

我在使用.Net按鈕的IE中遇到了一些非常奇怪的行爲。按鈕沒有通過jQuery提交.click()事件

我有一個正常的HTML按鈕。

<input type="submit" onclick="return Valadation()" value="Save profile" class="btn primary rounded" /> 

,然後調用一些簡單的JavaScript

if (txbEmail.length == 0) { 
      $("[id$='txbEmail']").addClass("error"); 
      $("[id$='txbEmail']").focus().select(); 
      showMessage = true; 
      displayMessage += "Email Address, " 
    } 
    else { 
     $("[id$='txbEmail']").removeClass("error"); 
    } 

    if (showMessage) {ShowStatus("warning", displayMessage); 
    return false; 
    } 
    else { 
    var saveButton = $('[id*="butSave"]'); 
    saveButton.focus(); 
    saveButton.click(); 

}

有了最終結果點擊一個asp.net按鈕

<asp:Button ID="butSave" runat="server" Style="display: none;" onclick="butSave_Click" /> 

這個問題是IE只是不會永遠發佈回頁面?正常工作在FF,鉻,只是沒有IE

+3

它顯示任何腳本錯誤? – V4Vendetta 2011-04-06 11:40:03

+0

你不能集中隱藏的元素。只需刪除'saveButton.focus();'行即可。可能FF和Chrome會優雅地忽略這一點,而IE發生錯誤時會崩潰,因此不會在事後處理。 – 2011-04-06 11:52:17

+0

終於弄清楚發生了什麼事情。空白輸入字段在IE中單擊事件之前提交表單,任何想法如何阻止它? – TheAlbear 2011-04-06 13:38:17

回答

0

原來,這是jQuery中的一個已知問題,並且不會被修復,但有一個非常簡單的解決方法。

如果有問題的按鈕的類型=「提交」(只在IE瀏覽器不會工作IE7,IE8,IE9都顯示此錯誤),腳本.click()將不起作用。

但是,如果您只是將按鈕類型更改爲type =「button」,則.click()事件可以正常工作。

3

如果您需要的ASP按鈕來執行JavaScript驗證,使用OnClientClick屬性:

<asp:Button ID="butSave" runat="server" Style="display: none;" onclientclick="return Valadation()" onclick="butSave_Click" /> 

簡單地返回false從Valadation()方法來阻止ASP按鈕提交。

+0

試過這沒有奏效,但我終於在jQuery論壇中發現了錯誤。我已經添加了解決此問題的答案。 – TheAlbear 2011-12-08 11:24:23