19

テキストボックスとたくさんのボタンがあります。ユーザーがテキストボックスを表示して「Enter」キーを押すと、特定のボタンクリックイベントが発生します。インターネットで「Enter」キーに問題があることを読み、いくつかの解決策を試しましたが、それでも常にそのボタンイベントに入ります(そのボタンはページの最初のボタンです)。

何もしないボタンを作成して、これをpage_loadに書き込んでみました。

idTextBoxFA.Attributes.Add("onkeydown","if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementBtId('" + noEnterButton.UniqueID + "').click();return false;}} else {return true}; ");

すべてのページコントロールはフォームにあり、作成したボタンにフォームの「defaultButton」プロパティを指定してみました。それもうまくいきませんでした。

これが機能しない理由と私が間違っていることは何ですか?

4

3 に答える 3

39

ENTERが押されたときにアクティブになる送信ボタンを制御するASP.NETの標準的な方法は、DefaultButtonプロパティが正しいボタンに設定されたasp:Panelでコントロールとボタンをラップすることです。

私があなたの質問を正しく読んでいるなら、ENTERが押されたときに1つの特定のボタンをアクティブにするだけなので、ページ上のすべてを1つのasp:Panelでラップします。

<asp:Panel id="pnlDefaultButton" runat="server" DefaultButton="btnOK">
    <!-- All controls here including: -->
    <asp:Button id="btnOK" runat="server" Text="OK" />
</asp:Panel>
于 2010-08-12T15:15:36.713 に答える
8

パネルは必要ありません。以下を使用してください。

UseSubmitBehavior="false"
于 2014-02-08T18:40:31.907 に答える
0

使ってください

idTextBoxFA.Attributes.Add("onkeypress", "javascript:var evnt = window.event";
if(evnt.keyCode==13)
{
document.getElementById('" + noEnterButton.ClientID + "').click();
}
else{};");
于 2014-02-20T09:23:52.503 に答える