0

さて、jQuery を使用してフォームの .submit() をインターセプトし、入力したデータを表示して確認を求めるカスタム ポップアップ ウィンドウを作成したいと考えています。確認ボタンをクリックすると true が .submit() に返されて続行しますが、false が押された場合は先に進まず、エントリを変更する機会があります。

フォームの内容が表示され、ボタンが表示されている状態で、ポップアップウィンドウが正常に作成されています。方法がわからないのは、ボタンのクリック関数をバインドして、一方がクリックされると .submit() に false を返し、もう一方がクリックされると true が .submit() に返されるようにすることです

私のコードの一部を投稿する必要がある場合は、お知らせください。

カスタムポップアップウィンドウにしたいので、確認ダイアログを使用したくありません。

4

3 に答える 3

2

confirm()ダイアログを使用する必要があります。

var submit = confirm('Are you sure?');

if (submit) {
    $(this).submit();
}
else {
    return false;
}

"Are you sure?"これは、ユーザーにメッセージを提示するダイアログによって機能します。ユーザーが確認okボタンをクリックすると、ダイアログは変数に戻ります。それ以外の場合trueは、変数に戻ります。submitfalse

が返された場合false(ユーザーが をクリックした場合cancel)、 は にif評価されfalseelseが実行されます。

于 2012-07-04T18:40:20.423 に答える
0

このフォームの送信clickイベントのみをキャッチしても、すべてのケースが処理されるわけではありません (たとえば、誰かがテキストエリア以外の入力で Enter キーを押すと、フォームも送信されます)。

送信を非同期で処理したい場合は、submit元の送信が防止された後に手動で起動して、isDirty状態をもたらしました。

(function () {
  var isDirty = true;
  $("form#id").on("submit", function ( evt ) {
    if (isDirty) {
      evt.preventDefault();
      popup( "... params ...", function () {
        // this will called, when the popup ensures the form can be submitted
        // ... & it will be called by the popup
        isDirty = false;
        $("form#id").submit();
      } );
    }
  });
})();
于 2012-07-04T19:32:27.727 に答える
0

ダイアログへのコールバック関数として .submit() を渡す必要があります。これは 1 行のソリューションではなく、慣れ親しむ必要があるパターンです。このhttp://www.youtube.com/watch?v=hQVTIJBZookは、このトピックの一部と、遭遇する可能性のある他の一般的な問題に役立つでしょう。

例:

function openPopup(form) {
    //
    // Put whatever code you use to open you
    // popup here
    //

    // Bind click handler to submit form if they click confim
    $("#id_of_confim_button").on("click", function() {
        // Get the form that was
        form.submit();
    });

    // Bind click handler for cancel button
    $("#id_of_cancel_button").on("click", function() {
        //
        // Code to close your popup
        //
    });
};

$("#id_of_form_submit_button").on("click", function(event) {
    // Stops the form from submitting
    event.preventDefault();

    // Get the form you want to submit
    var form = $("#form_being_submit");

    // Call your 'open custom popup' function and pass
    // the form that should be submitted as an argument
    openPopup(form);
});
于 2012-07-04T18:55:48.573 に答える