2012-01-05 18 views
5

私は単純なテキストボックスとボタンタイプの入力をページに持っています。Enterを押すと常に送信フォーム

<input id="sText" type="text" /> 
<input id="sButton" type="button" value="button" /> 

jQueryを使用してボタンのクリックをキャプチャします。

$("[id$=sButton]").click(function() { 

     ...do Stuff 

    }); 

上記のコードは、手動でボタンをクリックしている限り正常です。 "enter"キーを使ってボタンをクリックしたい時に問題に遭遇しました。私が何をしていても、Enterキーがデフォルトの送信機能を実行するのを防ぐことはできません。

私がした最初のことは、入力タイプを「送信」から「ボタン」に変更することでした。

は私が入力したキーイベントをキャプチャするためにjQueryを使用してみました onsubmit="return false;"

に、フォームのonSubmit検証を設定してみました:

$("#sText").keyup(function (event) { 
     if (event.keyCode == 13) { 
      alert("Enter!"); 
      // $("#sButton").click(); 
     } 
    }); 

私はフォームを送信していますように私は、Enterキーを押すたびに、それはです、ページ全体がリフレッシュされます。上記のjQueryコードは "Enter"キーストロークをキャプチャしますが、フォームはまだ送信してページを更新します。

私は何が起こっているのか分かりません。

答えて

9

この操作をキャンセルする必要があります。

event.preventDefault(); 

しかし、あなたはキーアップではなくkeydownでフォーム提出を殺すことができると信じています。

+0

+1 keydownの提案について –

+1

"event.preventDefault()"の追加に加えて、 "keyup"を "keypress"に変更しなければならず、keyupもkeydownも機能しませんでした。ありがとう! – SharpBarb

+0

Enterキーチェックとボタンをボタンタイプとして維持するのは、送信に戻す代わりに、たくさんの余分なコードを使用しているようです。 –

1

Epascarelloが正しい場合は、彼があなたに与えたコードで送信するために、キャンセルする必要があります。しかし、ENTERキーとClickingボタンが同じことをするように、ボタンを送信タイプに戻す必要があります。そうすれば、1つの領域での提出の取り消しを処理するだけで済みます。

<input id="sButton" type="submit" value="Submit" /> 

はJQuery:

$("#YourFormId").submit(function(event){ 

     event.preventDefault(); 
     ...do Stuff 

    }); 

この方法で一つの機能は、ENTERキーとボタンのクリックを処理します。

EDIT:event.preventDefault()を最初のステートメントとして配置します。

関連する問題