0

pjax()を使用してhtmlをページ内のさまざまなにプッシュするMVC4で記述されたシングルページアプリケーションがあります。ユーザーがデータを編集できるサブフォームが1つあり、ユーザーがデータを変更すると、JavaScriptでisDirtyフラグが設定され、ページの下部に未保存の更新があるというアラートがトリガーされます。また、ユーザーが保存せずにページを離れようとしたときに、追加の警告を実装したいと思います。このような従来のonbeforeunload関数を使用する場合

window.onbeforeunload = function() {
    if (isDirty) {
        return 'You have unsaved changes!';
    }
    return null;
};

ページを閉じたり、サイトから完全に離れたりしようとするとアラートが呼び出されますが、ユーザーがリンクの1つをクリックして、実際にはページを離れていないため、別の情報が再入力されてもトリガーされません。これらのpjax()リンクの1つが、ページを閉じた場合と同様のアラートを発生させるように設計するにはどうすればよいですか?

4

2 に答える 2

2

pjaxリクエストの前に発生するグローバルイベントをサブスクライブできます。

$(document).on('pjax:beforeSend', function() { 
    if (isDirty) {
        return confirm('You have unsaved changes! Are you sure you want to continue?');
    }
    return true;
});
于 2012-05-18T16:52:22.430 に答える
0

ページ内のリンクに委任されたイベントハンドラーを追加できます。ハンドラーが「新しいページ」をロードする可能性のあるリンクにバインドされていることを確認する必要があります。

于 2012-05-19T01:10:58.667 に答える