1

最初に私の悪い英語でごめんなさい。

フォーム(id = "form")を送信する前に、確認レイヤー(id = "confirmwin")を表示したいと思います。フォームを送信するための別のボタン(id = "yes")があります。

私はこれを試しました:

層:

<div id="confirmwin" style="display:none">
Are you sure to submit?<br>
<a href="#" id="yes">Yes</a> <a href="#" onclick="closeconfirmwin()">No</a>
</div>

JavaScript:

$(document).ready(function(){
  $("#yes").click( function() {
    $("#form").off("submit").submit();
  });
  $("#form").on("submit", function() {
    $('#confirmwin').show();
    return false;
  });
});

時々(常にではない)、それは無限ループにあるように見えます。

おそらく、#yesクリックイベントのオフイベントがうまくいかないでしょう。

4

4 に答える 4

1

1 つの解決策は、submit イベントのトリガー中に追加のパラメーターを渡すことです。jQuery API のイベント データの詳細については、こちらを参照してください。

$("#yes").click( function() {
    $("#form").trigger("submit", [true]);
});

$("#form").on("submit", function(e, blnConfirmed) {
    // If it's not confirmed yet, show the overlay.
    if (!blnConfirmed) {
        $('#confirmwin').show();
        return false;
    } // else it actually IS confirmed, do a real submit
});

最初にこのコードをテストする必要があります。これはほんの一例です。

于 2013-01-23T15:20:57.070 に答える
1

簡単です:

グローバル変数を追加するだけです:

var ignoreConfirm = false;

したがって、次のようになります。

$("#yes").click( function() {
  ignoreConfirm = true;
  $("#form").off("submit").submit();
});

$("#form").on("submit", function() {
  if(!ignoreConfirm){
   $('#confirmwin').show();
   return false;
  }
});
于 2013-01-23T15:21:43.647 に答える
1

.submit()電源を切りながら取り外してみましたか?

$("#form").off("submit").submit();

ではないでしょうか..

$("#form").off("submit")  //if

確認された場合にのみ、実行に進みます..

$("#form").submit(); //then you can /off() but I don't see the need to
于 2013-01-23T15:17:15.330 に答える
1

このようにシンプル

<form id="xpto" name="" action="" ... onsubmit="return callJavascriptFunctionConfirm();">

//bla bla bla here

</form>

function callJavascriptFunctionConfirm(){
   //do the logic here
   if (yes) 
      return true; 
   else
      return false;
}

}

于 2013-01-24T15:50:55.083 に答える