web-dev-qa-db-ja.com

ユーザーがフォームを送信するときにbeforeunloadアクションを無効にする方法は?

私はこの小さなコードを持っています:

<script>
$(window).bind('beforeunload', function() {
  $.ajax({
    async: false,
    type: 'POST',
    url: '/something'
    });
  });
</script>

ユーザーが送信ボタンを押したときに、このリクエストを無効にするにはどうすればよいのでしょうか。

基本的には、このようなものです。質問をして、ページを閉じることにした場合、警告ウィンドウが表示されますが、フォームを送信しているときはそうなりません。

25
pawelmysior

コール unbindbeforeunloadイベントハンドラーを使用:

$('form#someForm').submit(function() {
   $(window).unbind('beforeunload');
});

フォームが送信されないようにするには、次の行を追加します。

   return false;
41
Jacob Relkin

使用する

$('form').submit(function () {
    window.onbeforeunload = null;
});

メインの送信機能の前にこれがあることを確認してください! (存在する場合)

20
Parham

これは私たちが使用するものです:

ドキュメントの準備ができたらbeforeunload関数を呼び出します。

$(document).ready(function(){
    $(window).bind("beforeunload", function(){ return(false); });
});

Submitまたはlocation.reloadの前に、変数をバインド解除します。

$(window).unbind('beforeunload');
formXXX.submit();

$(window).unbind("beforeunload"); 
location.reload(true);
0
David
 <!DOCTYPE html>
 <html>
  <head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script type="text/javascript" src="http://cdn.jsdelivr.net/jquery.dirtyforms/2.0.0-beta00006/jquery.dirtyforms.min.js"></script>
  <script type="text/javascript">
    $(function() {
        $('#form_verify').dirtyForms();
    })
  </script>
  <title></title>
 <body>
<form id="form_verify" action="a.php" method="POST">
    Firt Name <input type="text">
    Last Name <input type="file">
    <input type="submit">   
</form>
0
Anup Panwar

ASP.NET WebアプリケーションのDetect onbeforeunloadを探していましたが、マスターページとコンテンツページでASP.NETを使用しているページで入力コントロールが変更された場合、警告メッセージを表示する必要があります。マスターページで3つのコンテンツプレースホルダーを使用しており、最後のプレースホルダーはフォームの後である

<form runat="server" id="myForm">

フォームの終了タグの後、本文の終了タグの前にこのスクリプトを使用しました

<script>
        var warnMessage = "Save your unsaved changes before leaving this page!";
        $("input").change(function () {
            window.onbeforeunload = function () {
                return 'You have unsaved changes on this page!';
            }
        });
        $("select").change(function () {
            window.onbeforeunload = function () {
                return 'You have unsaved changes on this page!';
            }
        });
        $(function () {
            $('button[type=submit]').click(function (e) {
                window.onbeforeunload = null;
            });
        });
    </script>

beforeunloadは、バインディングに関しては、この方法では確実に機能しません。ネイティブに割り当てる必要があります

だから私はそれをこのバインドのように機能させましたが、バインド解除も私にとってうまくいきませんでしたjQuery 1.7以降では、イベントAPIが更新されました。 on()/ off()関数を使用します。

0
dnxit

bindを使用している場合は、次を使用します。

$('form').submit(function () {
    $(window).unbind('beforeunload');
});

これは、すべてのフォーム送信に適しています。

0
ShelðÔn Alag