私は次のようにしたいと思います:レコードを見て編集したり、新しいレコードを追加してから、画面を終了すると、「保存しますか?」というメッセージが表示されます。codeigniter
私はこのことをPHPでどのように開発できますか?私は前にこのタイプの開発をしていません。
何か提案がありますか?
私は次のようにしたいと思います:レコードを見て編集したり、新しいレコードを追加してから、画面を終了すると、「保存しますか?」というメッセージが表示されます。codeigniter
私はこのことをPHPでどのように開発できますか?私は前にこのタイプの開発をしていません。
何か提案がありますか?
jquery onbeforeunload関数を使用すると、ページリフレッシュ時に実行されるか、 ブラウザのタブまたはブラウザを閉じます。
$(window).on('beforeunload', function(){
return 'Are you sure you want to leave?';
});
あなたはjavascriptの変更を探す必要があります。グローバル変数を作成し、changed
と呼ぶことができます。ページの読み込み時にfalseに設定します。レコードが編集されるたびにそれをtrueにし、保存するたびにfalseに設定します。ユーザーがJSで検出する必要があるタブを閉じているときは、changed
という変数を探します。それが本当であれば、彼には何の問題もなくすぐに閉じることができます。
ウィンドウ上でアンロードイベントを待機するには、javascipt/jqueryが必要です。
私はあなたがの線に沿って何か行うことができます信じてい:
<script>
function saveAlert() {
var confirm = confirm('You haven\'t saved your form! Do you want to save?');
if (confirm) {
$('form').submit();
}
return confirm;
}
$(function() {
var formSaved = <?=($formSaved) ? 'true' : 'false'?>;
if (!formSaved) {
$(window).unload(saveAlert());
}
});
をあなたが行う必要がありますすべてのアラートを表示する必要があるかどうかを判断するために$ formSaved変数にブール値を渡すことです。
あなたがPHPでこの質問に対する解決策を試行したい場合は、変更をコミットせずに、フィールドの変更/更新時にデータベースのフィールドデータを保存するためにAJAXを使用する必要がありますあなたはそれをクッキーやセッション変数、またはある種の 'unsaved_records'テーブルに格納することができます。
ユーザーがオフサイトドメインに移動すると、PHPで行うことはできませんが、サイトに戻った場合は、「保存していないデータがあります。 。
データが保存されていなかったページに戻るまで待つこともできます。また、データが保存されていなかったかのように元の状態に復元することもできます。これには慎重な計画が必要ですが、可能です。
ここでの他の回答で明白なように、クライアント側のスクリプティングのみが、新しい場所に向けられたウィンドウまたはタブを一時停止することができます。
結論として、ユーザーがPHPのページを離れて移動するのを防ぐことはできません。 AJAXを使用してテンポラリ・データを表またはクッキーに格納し、サイト内の他のすべてのページ(データが保存されていないことがわかりますが、複雑になる可能性があります)でユーザーに確認を促すことができます。 –