2011-11-15 8 views
4

私は、ASP.NET Webフォームページに複数のデフォルトボタンがあります。 Google Chromeを使用するすべてのブラウザでは、期待どおりに動作しますが、Chromeでは間違ったデフォルトボタンが発生します。複数のデフォルトが存在する場合、ASP.NETのデフォルトボタン(LinkBut​​ton)がGoogle Chromeで動作しない

私はこの問題の一般的な原因のいくつかを読んでいます。無効なHTML(TABLE要素の中にPanelを置く)ですが、そうではありません。

私はstackoverflowで同様の質問を見ましたが、受け入れられた回答はありませんでした。

この問題の解決方法はありますか?

更新:

私はLinkBut​​tonsがデフォルトボタンとして設定するには適さないというMSDNで読みます。

"ボタンとImageButtonコントロールのみがサポートされています。"

これは問題であるはずです。

+0

デフォルトではどういう意味ですか?また、ボタンを1つクリックしても、他のボタンのイベントアクションは –

+0

と表示されますか?これらのパネルとDefaultButton設定で持っているhtmlサイドコードを表示できますか?それが多ければ多分、他のフォーム要素を梳かすかもしれません。 –

+0

ボタンをasp:panelの内側に配置し、パネルのdefaultbuttonプロパティを設定していますか? [この](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.panel.defaultbutton.aspx)のように –

答えて

0

私はMSDNで、LinkBut​​tonはデフォルトボタンとして設定するのには適していないと読んでいます。

"ボタンと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 
}); 
関連する問題