フォームの未保存の変更に対するアラート
2023-11-04 12:02:25
質問
私は、ユーザーがページを変更し、未保存の変更がある場合は、ユーザーがアラートを取得するように、マスターファイルにJqueryコードを書きたい。 私はこれからの1つの答えを得た。 リンク
しかし、ほとんどのソリューションでは、私はすべてのページでコードを記述する必要があります。私は、誰もが自分のモジュールにそれを書くことを心配する必要はありませんように、それが一箇所にのみ書き込むようにしたいと思います。私のコードは以下のようなものです。
<script type="text/javascript">
var isChange;
$(document).ready(function () {
$("input[type='text']").change(function () {
isChange = true;
})
});
$(window).unload(function () {
if (isChange) {
alert('Handler for .unload() called.');
}
});
</script>
しかし、テキストボックスに変更を加えるたびに、.change() イベントが発生しません。
コードに何か問題があるのでしょうか?
EDITです。 .change()を.clickに変更したら発動しました。jquery1.4.1を使っていますが、change()が発動しないのはjqueryのバージョンのせいでしょうか?
どのように解決するのですか?
これは私が使用しているものです、別のJSファイルにこのすべてのコードを入れて、あなたのヘッダーファイルでそれをロードするので、あなたは何度も何度もこれをコピーする必要がないでしょう。
var unsaved = false;
$(":input").change(function(){ //triggers change in all input fields including text type
unsaved = true;
});
function unloadPage(){
if(unsaved){
return "You have unsaved changes on this page. Do you want to leave this page and discard your changes or stay on this page?";
}
}
window.onbeforeunload = unloadPage;
EDIT for $ が見つかりませんでした。
このエラーは、3つのうちの1つだけが原因です。
- JavaScript ファイルがページに正しく読み込まれていません。
- jQuery のバージョンが間違っている。これは、誰かがコアファイルを編集したか、プラグインが $ を上書きしたために起こる可能性があります。 変数が上書きされた可能性があります。
- ページが完全に読み込まれる前に JavaScript が実行され、その結果、jQuery が完全に読み込まれる前に実行されています。
すべてのJSコードがこの中に配置されていることを確認します。
$(document).ready(function () {
//place above code here
});
保存/送信/投稿ボタン例外のための編集
$('#save').click(function() {
unsaved = false;
});
動的入力に対応するための編集
// Another way to bind the event
$(window).bind('beforeunload', function() {
if(unsaved){
return "You have unsaved changes on this page. Do you want to leave this page and discard your changes or stay on this page?";
}
});
// Monitor dynamic inputs
$(document).on('change', ':input', function(){ //triggers change in all input fields including text type
unsaved = true;
});
上記のコードをalert_unsaved_changes.jsファイル内に追加します。
これが役立つことを願っています。
関連
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] jQueryでフォームデータをJavaScriptオブジェクトに変換する
-
[解決済み] フォーム送信のようなJavaScriptのポストリクエスト
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] Node.jsのES6クラスをrequireで作る
-
[解決済み] JavaScriptとLuaの微妙な違い [終了しました]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】未保存の変更を含むウェブページを離れる前にユーザーに警告を表示する
-
[解決済み] JavaScript で範囲を作成する - 奇妙な構文
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] アサインの左側にJavascriptのオブジェクトブラケット表記({ ナビゲーション } =)があります。
-
[解決済み] JavaScriptでの大文字小文字を区別しない正規表現
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] jQueryを使用して、すべてのクリックイベントハンドラを削除するにはどうすればよいですか?
-
[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
-
[解決済み] 未保存の変更を検出する