2011-11-15 51 views
4

我有一個ASP.NET Webforms頁面,其中有多個默認按鈕。除谷歌瀏覽器之外的所有瀏覽器中,它們都按預期運行,但在Chrome中,錯誤的默認按鈕會觸發。當存在多個默認值時,ASP.NET默認按鈕(LinkBut​​ton)無法在Google Chrome中工作

我讀過一些這個問題的常見原因,例如。無效的HTML(將面板放入TABLE元素中)但事實並非如此。

我在stackoverflow上看到了一個類似的問題,但沒有一個接受的答案。

有沒有解決這個問題的方法?

更新:

我在MSDN讀到了LinkBut​​ton不適合設置爲默認值按鈕。

「只支持Button和ImageButton控件。」

我想這一定是問題所在。

+0

你是什麼意思默認按鈕。另外,你的意思是說,你點擊一個按鈕,但其他按鈕的事件動作被稱爲 –

+0

你可以顯示一些你用這些面板和他們的DefaultButton設置的HTML代碼?如果它很重,也許可以梳理其他表單元素。 –

+0

您是否將按鈕放在asp:panel中,然後在面板上設置defaultbutton屬性?像[這](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.panel.defaultbutton.aspx) –

回答

0

我在MSDN上看到LinkBut​​tons不適合設置爲默認按鈕。

「只支持Button和ImageButton控件。」

0

我從來沒有親身體驗過這種行爲。 DefaultButton屬性在Chrome中一直適用於我,但如果你不能真正解決這個問題,還是有辦法的。您可以在要爲其啓動按鈕的控件中插入一個簡短的JavaScript。下面是一個非jQuery的方法:

StringBuilder script = New StringBuilder(""); 
    script.Append("if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {"); 
    script.Append("document.getElementById('" + Me.btnToFire.ClientID); 
    script.Append("').click();return false;}} else {return true};"); 
    this.txtControlToAttach.Attributes.Add("onkeydown", script.ToString()); 

這裏是一個jQuery解決方案,可用於分配相同的塊的倍數(未經測試,因此它可能需要的調整)。

function fireButtonClick(ctrl, event) { 
    if(event.which || event.keyCode){ 
     if ((event.which == 13) || (event.keyCode == 13)) { 
      ctrl.click(); 
      return false; 
     } 
    } 
    else { 
     return true; 
    } 
} 

$(document).ready(function() { 
    $("#<%=this.ControlToAttach.ClientID%>").keypress(function(event) { 
     fireButtonClick($("#<%=this.btnToFire.ClientID%>"), event); 
    }); 

    $("#<%=this.ControlToAttach2.ClientID%>").keypress(function(event) { 
     fireButtonClick($("#<%=this.btnToFire2.ClientID%>"), event); 
    }); 

    // Just keep adding controls here 
});