0

この質問はjquery disable form submit on enterによって回答されているはずですが、その質問に対する答えは私にはうまくいかないようです - 入力テキストフィールドで Enter キーを押すと、次の 3 つのことが起こります。

  1. フィールドの変更イベントが発生します。
  2. フォームが送信されます。
  3. 最後に、前述の回答で説明されている keyup イベント ハンドラーが起動されます。

これで、keyup を keydown に置き換えることができます。その後、submit は実際にはトリガーされません。しかし、フィールドの変更イベントもそうではありません。

インターネット上には多くのリンクがありますが、ほとんどは複雑なシナリオについて話しています。

私が望むのは、常に入力時に送信を無効にすることだけですが、それ以上は何もありません。

私はjquery 1.8.0を使用しています

ありがとう。

編集

明確にしたい。ユーザーが送信入力ボタンをクリックしたときに送信が発生するようにします。入力時に発生したくないだけです。

<form id="invoiceForm">
  ...
  <input type="submit"/>
</form>

EDIT2

http://jsfiddle.net/mark69_fnd/akZG4/ - 送信がトリガーされると、メッセージが表示されます

{"error": "Please use POST request"}

入力時にこのメッセージを表示したくありません。送信が実際にクリックされた場合のみ。

EDIT3

実際に空白のページを送信し、送信時に警告するようにフィドルを変更しました。

EDIT4

テキスト入力フィールド内で Enter キーを押したときにフォームを送信するというデフォルトのアクションを防止したいと考えています。しかし、テキスト入力の自然な動作、つまり変更イベントのトリガーを維持したいと考えています。

4

1 に答える 1

1

同様の状況で、私はこれを使用しました:

HTML:

<input name="my_text" onkeypress="disableSubmit(this, event)" />

JS:

function disableSubmit(elem, event) {
    if (event.which == 13) { 
        event.preventDefault();
        $(elem).blur();
        return false;
    }
}

したがって、基本的にはブラーを発生させるため、入力が変更されると、変更イベントも発生します。もちろん副作用は、入力がフォーカスを失うことです。しかし、私たちの使用シナリオの観点からは、それで問題ありませんでした。

于 2012-10-04T12:33:30.387 に答える