web-dev-qa-db-ja.com

ASP.NetページのEnterキーでポストバックが発生する

あるべきではないときにポストバックするaspxページがあります。ページには2つのテキストボックス、2つのリストボックス、および2つのボタンがあります。いずれかの時点でEnterキーが押されると、最初のボタンにフォーカスが与えられ、「クリック」されて、リストボックス内の選択が失われます。

これを無効にするにはどうすればよいですか?入力ボタンをキャプチャしてメソッドを実行する方法に関するチュートリアルはたくさんありますが、上記の「最初のボタンを見つけてクリックする」機能を単純に無効にする方法を見つけることができます。

22
George
  • フォームまたはパネルで DefaultButton を設定できます。これにより、何が起こるかを完全に制御できます。
  • ボタンに seSubmitBehavior = "False"を設定します。これにより、Enterで「AutoPostback」が無効になります。

Enterでのポストバックを完全に防ぎたい場合は、2番目の方法をお勧めします。

32
Tim Schmelter

jQueryを使用していますか?

もしそうなら:

$(document).keypress(function(e)
{
    if(e.keyCode === 13)
    {
        e.preventDefault();
        return false;
    }
});
25
bevacqua

次のコードを使用して、ポストバックの原因となるEnterキーを無効にします。このコードは、上記のすべてのブラウザー4.0でEnterキーをブロックします。ただし、EnterがTextareaまたはSubmitボタン自体で押された場合を除きます。

<script language="JavaScript">
var nav = window.Event ? true : false;
if (nav) {
window.captureEvents(Event.KEYDOWN);
window.onkeydown = NetscapeEventHandler_KeyDown;
} else {
document.onkeydown = MicrosoftEventHandler_KeyDown;
}

function NetscapeEventHandler_KeyDown(e) {
if (e.which == 13 && e.target.type != 'textarea' && e.target.type != 'submit') { 
return false; 
}
return true;
}

function MicrosoftEventHandler_KeyDown() {
if (event.keyCode == 13 && event.srcElement.type != 'textarea' && 
event.srcElement.type!= 'submit')
return false;
return true;
}
</script>
7
Priya

ASP.Net TextBoxコントロールにのみこれを配置します。

<asp:TextBox ID="TextBox1" runat="server"
   onkeydown = "return (event.keyCode!=13);" >
</asp:TextBox>
2
mggSoft

これはWebアプリケーションのデフォルトの動作です。送信を中止するだけで、見つけたチュートリアルの1つを取得し、その動作を隠すことができます。

1
Mitchel Sellers
<body onkeydown = "return (event.keyCode!=13)">
1
amyw