ユーザーがEnterキーを押すと、ページがポストバックされるWebフォームがあります。ここに問題があります: ユーザーがフォームをクリックすると、コントロールがフォーカスされ (入力コントロールをクリックしようとしているときのマウス ポインターに変わります)、Enter キーを押すと、ページがリロードされます。
ユーザーがクリックした場所に関係なく、任意のキーの押下をキャプチャする方法はありますか?
ユーザーがEnterキーを押すと、ページがポストバックされるWebフォームがあります。ここに問題があります: ユーザーがフォームをクリックすると、コントロールがフォーカスされ (入力コントロールをクリックしようとしているときのマウス ポインターに変わります)、Enter キーを押すと、ページがリロードされます。
ユーザーがクリックした場所に関係なく、任意のキーの押下をキャプチャする方法はありますか?
//Jquery example:
//Bind this keypress function to all of the input tags
$("input").keypress(function (evt) {
//Deterime where our character code is coming from within the event
var charCode = evt.charCode || evt.keyCode;
if (charCode == 13) {
//Enter key's keycode
return false;
}
});
Enter キーが押されたときにボタンが「クリック」されないようにし、ユーザーが入力コントロールにいるときにポストバック/送信が行われないようにする場合は、ボタンをポストバックしないように設定するか、過去に行ったことを行う必要があります。私が持っていた状況で私のパネルのデフォルトボタンとして設定するために何もしないボタンが設定されています。
<asp:Panel ID="pPanel" runat="server" DefaultButton="bDefault">
<%-- here are all the input controls and a button that
now must be physically clicked to submit--%>
</asp:Panel>
<asp:Button ID="bDefault" runat="server" Text="" CssClass="hidden" OnClientClick="return false;" />
return false OnClientClick により、ボタンはポストバックされません。
KeyCode 13をキャプチャすることで body タグでこれを無効にすることができますが、これがブラウザー間でどの程度互換性があるかはわかりません。
<body onkeydown = "return (event.keyCode!=13)">
jquery を使用して keyup イベントを登録し、return キーだけに集中することができます。次に、指定されたこの値に対して適切に反応していることを確認する必要があります。
$(document).on('keydown', function(e){ //ロジック }