私はこの小さなコードを持っています:
<script>
$(window).bind('beforeunload', function() {
$.ajax({
async: false,
type: 'POST',
url: '/something'
});
});
</script>
ユーザーが送信ボタンを押したときに、このリクエストを無効にするにはどうすればよいのでしょうか。
基本的には、このようなものです。質問をして、ページを閉じることにした場合、警告ウィンドウが表示されますが、フォームを送信しているときはそうなりません。
コール unbind
beforeunload
イベントハンドラーを使用:
$('form#someForm').submit(function() {
$(window).unbind('beforeunload');
});
フォームが送信されないようにするには、次の行を追加します。
return false;
使用する
$('form').submit(function () {
window.onbeforeunload = null;
});
メインの送信機能の前にこれがあることを確認してください! (存在する場合)
これは私たちが使用するものです:
ドキュメントの準備ができたらbeforeunload関数を呼び出します。
$(document).ready(function(){
$(window).bind("beforeunload", function(){ return(false); });
});
Submitまたはlocation.reloadの前に、変数をバインド解除します。
$(window).unbind('beforeunload');
formXXX.submit();
$(window).unbind("beforeunload");
location.reload(true);
<!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>
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()関数を使用します。
bindを使用している場合は、次を使用します。
$('form').submit(function () {
$(window).unbind('beforeunload');
});
これは、すべてのフォーム送信に適しています。