14

送信に数秒かかる HTML フォームに取り組んでいます。送信にフォームの一部のフィールドを無効にしたいと考えています。

フォームのsubmitイベントのハンドラーでこれを行うことができますが、これはフォームが送信される前に発生します。コントロールを無効にすると、それらの値はサーバーに送信される投稿データに含まれません。

ハンドラーで送信イベントをキャンセルし、フォームからイベント ハンドラーを削除submitし、JavaScript を使用して自分でフォームを送信し、コントロール無効にしようとしましたが、ユーザーがクリックしたボタンを知る必要があるという問題があります。フォームを送信します。この情報は元のフォーム送信に含まれていますが、手動でトリガーしたものには含まれていません (ボタンがクリックされていないため)。

この情報を手動フォーム送信にコピーすることはできますが、フォーム送信後に無効化コードを実行する方法はありますか?

4

5 に答える 5

1

フォームを送信した後、この関数をトリガーできます。

function name() {
    $("#target :input").attr("disabled", true);
    return true;
}

このコードは、ID が「target」である要素から派生したすべての from フィールドを無効にします。

このバージョンは、すべての入力要素に一致します:

function name() {
    $("#target input").attr("disabled", true);
    return true;
}

このコードを機能させるには、jQuery ライブラリを含める必要があります。

于 2012-08-29T16:04:24.833 に答える
1

これは、再帰呼び出しを防ぐためにJavascriptsネイティブ送信を使用することを除いて、sp00mの回答とほとんど同じです。

$('#myForm').submit(function() {
    this.submit();
    disableFields(); // your own function
    return false;
});
于 2015-08-14T07:34:06.787 に答える
-1

jQueryを使用.post()して送信し、.button().click()どのボタンがクリックされたかを検出できます

.post()送信が完了した後に実行する関数を受け取ります

于 2012-08-29T15:22:22.013 に答える