1

ajax送信を実行できるように、Enterキーを無効にしましたが、サーバーからの応答が返される前にユーザーがEnterキーを2回押した場合に、フォームが2回送信されないようにします。

ここでは、Enterキーを無効にして、次のような関数を割り当てていますsubmitForm()

$(document).ready(function(){
    offset = $("#quantity").html();
    $("#lastName").focus();
    $(document).bind("keypress" , function(e){
        if (e.which == 13 && (!$("#notes").is(":focus")) && (!$("#submit").is(":focus"))) {
            submitForm(); return false;
        }
    })
    $("#submit").click(function(){ submitForm(); });
});

他の場所でもう一度試しましbind()たが、何もしませんでした。いろいろな場所で試してみpreventDefault()ましたが、間違った場所に置いているか、間違っていると思います。これを機能させることができないようです。

私はこれを見つけました:それのために関数が実行された後にEnter / Returnキーを無効にする方法は?、しかし、投稿者の例では、スクリプトがボックスに何かがあるかどうかを確認するため、私の質問には答えませんが、送信したかどうかを確認したいと思います。どうすればいいのかわかりません。私が本当にやりたいのは、ajax呼び出しでサーバーから返事が来るまでEnterキーを無効にすることです。次にsubmitForm()を示します。

function submitForm() {
    $.post("/ajax/files" , $("#files").serialize(), function(data){
        filesReset();
        if (data != "") {
            $("#lastInsert table tbody:last").prepend(data);
            $("#lastInsert table tbody:last tr:first").find("td").hide();
            $("#lastInsert table tbody:last tr:first").find("td").fadeIn(1000);
            $("#lastInsert table tbody:last tr:first").effect("highlight" , {"color": "aqua"}, 1000);

            $("#lastInsert table tbody:last tr:last").remove();
        } else {
            alert("Insert rejected: either insufficient criteria or the server is down.");
            $("#hidden").click();
        }
    });
}

この送信機能をできるだけ高速にする必要があるため、サーバー側で何もする必要はありません(これはペースの速いデータ入力フォームになります)。

4

2 に答える 2

3

次のような変数を使用します。

$(function(){

    var running = false;

    $(document).bind("keypress" , function(e){
        if (e.which == 13) {
            if(running === false) {
                running = true;
                submitForm();
            }
            return false;
        }
    })

    $("#submit").click(function(){
        if(running === false) {
            running = true;
            submitForm(); 
        }
    });

});
于 2011-09-27T16:57:30.533 に答える
0

送信ボタンを通常のボタンに変更し、onclickイベントを使用してJavaScriptを使用してフォームを送信する方が簡単です。そうすれば、Enterキーを押しても何も起こりません。クリックされたときにボタンを無効にし、Ajax呼び出しが成功したときにボタンを有効にします。

于 2011-09-27T16:49:23.987 に答える