5

重複の可能性:
jQuery Event Keypress: どのキーが押されましたか?

OK、これが私の状況です(私は過去にこの問題を解決しましたが、私のアプローチが最善であったかどうか確信が持てないので、私はすべてのアドバイスに耳を傾けています) :

  • シンプルな HTML フォームがあります
  • このフォームの目的は決して提出することではありません
  • ユーザーが(疑似)Submitボタンを通常どおりクリックすると、目的のアクションが実行されます(Javascript/Ajaxなどを介して)

ことは次のとおりです。

  • ユーザーがenterを押すと、フォーム送信されます。これは絶対に望ましくありません。
  • 必要なのは、その特定のキー押下をキャッチし、その場合、ボタンがクリックされた場合に通常実行されるアクションをトリガーすることです。

これについてどう思いますか?


私のアプローチ


フォーム

<form id="someId" action="#" method="post" 
      onsubmit="return false;" onkeypress="return enterSub(this,event);">
...
</form>

コード

function enterSub(inField, e) 
{ 
        var charCode;

        if(e && e.which)
        {
            charCode = e.which;
        }
        else if (window.event)
        {
            e = window.event;
            charCode = e.keyCode;
        }

        if (charCode == 13) 
        {
            performThatAction; // My Main action
        }
 }
4

4 に答える 4

5

ボタンのクリックではなくフォームの送信にバインドし、デフォルトのアクションを防止します。

$("#myform").submit(function(e){
    e.preventDefault();
    alert("The action has occurred without submitting the form!");
});
于 2012-08-21T05:20:15.130 に答える
2

ユーザーがEnterキーを押したときに特定のことも実行したい場合は、次のように実行できます。

$(document).keypress(function(e) {
        if(e.which == 13) {
           e.preventDefault();
           // Do something         
        }
    });
于 2012-08-21T05:24:32.497 に答える
2
$('#form_id').submit(function(){
  //do something
});

この関数は、ユーザーがフォームを送信しようとするたびにトリガーされます (false を返すか、デフォルトを防止する必要があります)。

于 2012-08-21T05:20:26.630 に答える
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<script>
document.attachEvent("onkeydown", win_onkeydown_handler);
function win_onkeydown_handler()
{
alert(event.keyCode);
switch (event.keyCode){
case 13 : // 'enter'
event.returnValue = false;
event.keyCode = 0;
alert("Enter Blocked");// If need show this alert else comment it
break;

}
}
</script>
<BODY>
</BODY>
</HTML>

上記のスクリプトを使用して、必要に応じて入力を処理できるエンターキーを見つけてください。疑問が解決したことを願っています。

于 2012-08-21T05:28:21.210 に答える