0

jQuery を使用して、フォームの入力テキスト フィールドの onchange 効果を取得しています。

フォームに id="myForm" があり、入力テキスト フィールドに id="myText" があるとします。

$('#myText').change(function(){
    $('#myForm').submit();
});

このようにして、フィールドを変更してからフィールドの外側をクリックすると、フォームが送信されます。

ただし、入力フィールドの外側をクリックすることなく(オンフォーカスを失う)、入力フィールドにデータを挿入し終わったら、フォームを送信したいと考えています。

何か案は?それは可能ですか?ありがとう

4

2 に答える 2

2

直面する問題は、ユーザーがテキスト ボックスに情報を入力し終わったことを検出する必要があることです。変更時は、キーを押すと、テキストボックスに新しいコンテンツが表示され、入力した最初の文字がトリガーされます。これに対する唯一の解決策は、すべてのキーアップイベントの最後に2秒のタイムアウトを登録して、別の文字を入力した場合にキャンセルするフォームを送信することだと思います。

たとえば、次のようになります。

var timedSubmit;

$('#myText').keyup(function(e) {
    if (e.keyCode) == 13 { $("#myform").submit() }
    clearTimeout(timedSubmit);
    timedSubmit = setTimeout('$("#myform").submit()', 2000);
});

Enter キーが押されたときに単にフォームを送信するように、押されている Enter キー (キーコード 13) も検索したことに注意してください。

于 2011-06-11T11:29:32.503 に答える
1

これは不可能だと思います。常にキーアップ/キーダウン イベントを使用できるため、入力が特定の長さになると送信されます。しかし、これも意味がありません。タイプミスをすると、すぐに送信されるため、修正できません。

したがって、フォーカスの変更を除いて、JavaScript が終了したかどうかはわかりません。

タイムアウトを追加することを提案する人もいるかもしれませんが、これは問題を軽減するだけです。ユーザーの速度がわからないか、送信プロセス中に中断されるためです。

于 2011-06-11T11:28:35.997 に答える