HTML ページにカスタム データを更新するためのフォームがあります。フォームを送信する前に、フォーム内のデータを更新し、同じ html ページの他のリンクをクリックした場合、ユーザーに確認メッセージを表示したいと思います。
これをどのように実装したか:
ユーザーがフィールドを更新したかどうかを保持するブール変数を作成しました。そして、を使用してhtmlページ内click
のすべてのタグのイベントをバインドしています。ユーザーがページ上の任意のアンカー タグをクリックすると、状態変数が true (値が変更された) かどうかを確認します。本当ならリダイレクトを止めて確認したいです。anchor
jquery
ここまでやってきました。cancel
しかし問題は、ユーザーが確認ボックスをクリックしてもリダイレクトを停止できなかったことです。
ここにコードがあります
$(document).ready(function(){
GLOBAL_NAMESPACE.value_changed = false;
$("[id^='id_']").live('change', function (){
GLOBAL_NAMESPACE.value_changed = true;
});
});
$('a').bind('click',function (e) {
e.preventDefault();
if (GLOBAL_NAMESPACE.customize_option_changed){
var res = confirm('you have unsaved changes. Do you want to continue?');
if(res){
GLOBAL_NAMESPACE.customize_option_changed = false;
$(this).click();
}else{
console.log('stay on same page...');
// Problem: user redirects to the clicked link even if he reaches here
}
}
});
実装のアイデアに問題はありますか? このコードの問題は何ですか? またはこれを行うためのより良い方法はありますか?