あるべきではないときにポストバックするaspxページがあります。ページには2つのテキストボックス、2つのリストボックス、および2つのボタンがあります。いずれかの時点でEnterキーが押されると、最初のボタンにフォーカスが与えられ、「クリック」されて、リストボックス内の選択が失われます。
これを無効にするにはどうすればよいですか?入力ボタンをキャプチャしてメソッドを実行する方法に関するチュートリアルはたくさんありますが、上記の「最初のボタンを見つけてクリックする」機能を単純に無効にする方法を見つけることができます。
Enterでのポストバックを完全に防ぎたい場合は、2番目の方法をお勧めします。
jQueryを使用していますか?
もしそうなら:
$(document).keypress(function(e)
{
if(e.keyCode === 13)
{
e.preventDefault();
return false;
}
});
次のコードを使用して、ポストバックの原因となる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>
ASP.Net TextBoxコントロールにのみこれを配置します。
<asp:TextBox ID="TextBox1" runat="server"
onkeydown = "return (event.keyCode!=13);" >
</asp:TextBox>
これはWebアプリケーションのデフォルトの動作です。送信を中止するだけで、見つけたチュートリアルの1つを取得し、その動作を隠すことができます。
<body onkeydown = "return (event.keyCode!=13)">