2009-06-20 12 views
1

私は3つのテキストボックスとasp.netリンクボタンコントロールを持つasp.netフォームを持っています。私はボタンのクリックイベントハンドラメソッドを呼び出す私はasp.netパネルとそのデフォルトのボタンのプロパティを使用しています。IEで動作します。しかし、Firefoxなどの他のブラウザではありません。そうする他の方法はありますか?ASP.NET:フォームのEnterキーでコードビハインドメソッドを呼び出す

答えて

2

あなたはのDefaultButtonプロパティ(ASP.Net 2.0以上)を試みることができます。 ASP.NetフォームとPanelコントロールの両方には、DefaultButtonプロパティがあります。デフォルトのアクションは、Enterキーがボタンのクリックをトリガーする必要があることを意味します。 UseSubmitBehavior="False" をご送信ボタンに:

<form id="Form1" defaultbutton="SubmitButton" runat="server"> 
    <asp:panel id="panel1" defaultbutton="anotherbutton" runat="server"> 
    </asp:panel> 
</form> 

を追加することで解決することができる、既知のFireFoxの問題があります。このBlogは、UpdatePanelの問題とその解決策を説明していますが、ここでもうまくいくかもしれません。

また、questionには、他の解決策へのリンクがあります。

+0

これはIE以外のブラウザでも機能しますか?私はこれを試してFirefoxで失敗しました – Shyju

3

を確認してくださいこれはFF3のバグ(わからない)のようですが、それはASP.NETによってレンダリングWebForm_FireDefaultButtonメソッドをオーバーライドするように固定さが の下に与えられているスクリプトは、ページの最後にそれを保管してください。

var __defaultFired = false;

function WebForm_FireDefaultButton(イベント、ターゲット){ var element = event.target || event.srcElement;

if (!__defaultFired && event.keyCode == 13 && !(element && (element.tagName.toLowerCase() == "textarea"))) { 
    var defaultButton; 

    if (__nonMSDOMBrowser) 
     defaultButton = document.getElementById(target); 
    else 
     defaultButton = document.all[target]; 

    if (defaultButton) { 
     if(typeof(defaultButton.click) != "undefined") 
      defaultButton.click(); 
     else 
      eval(unescape(defaultButton.href.replace("javascript:", ""))); 

     event.cancelBubble = true; 

     if (event.stopPropagation) event.stopPropagation(); 
     return false; 
    } 
} 
return true; 

}

関連する問題