0

次のスクリプトを使用して、フォームのコンテンツが変更されているかどうかを確認し、ユーザーが変更を保存せずに閲覧できないようにしています。

<script type="text/javascript">
var isDirty = false;
var msg = 'You have unsaved changes.';
$(document).ready(function(){
    $(':input').change(function(){
        if(!isDirty){
            isDirty = true;
        }
    });
    window.onbeforeunload = function(){
        if(isDirty){
            return msg;
        }
    };
});
</script>

現在、[保存]ボタンは次のようになっています。

<input type="submit" name="frmProjectAction" value="Save" onclick='selectAll(frmProjectResources,true);' />

これはほとんどの部分で機能していますが、2つの問題があります。

1.ユーザーがフォームの[保存]ボタンをクリックしても起動します。どうすればこれを防ぐことができますか?

2.フォームにあるTinyMCEテキストボックスの変更が検出されません。TinyMCEテキストボックスおよびフォームの他のすべてのフィールドの変更を検出するにはどうすればよいですか?

よろしくお願いします-デイブ

4

3 に答える 3

1

1:isDirtyをfalseに設定する保存ボタンでclick()jquery関数を使用します。jqueryでターゲットにできるように、最初にIDまたはクラスを保存ボタンに追加する必要があります。保存ボタンIDを「savebutton」に設定してから、次の操作を行ったとします。

$('#savebutton').click(function(){
  selectAll(frmProjectResources,true); // <-- from your onclick="" attribute
  isDirty = false;
})

selectAll(...)部分を保存ボタンのonclick属性からjqueryに移動したことがわかります。したがって、ボタンからonclick属性を削除する必要があります。

2:TinyMCEにはonchange_callbackがあり、これを使用してisDirtyをtrueに設定する関数を起動できます。onchange_callbackは、TinyMCEを初期化するときに設定され、フォームが変更されたときに起動する関数の名前を指定します。

//first define the function

function setIsDirty(){
  isDirty = true;
}

// then init the tinyMCE
tinyMCE.init({
        ... // some parameters
        onchange_callback : "setIsDirty"
});

このようにして、エディターが変更されたときに何が起こるかを正確に制御できます。ページを離れる前に編集されているかどうかを確認する必要がある場合は、TinyMCE独自のisDirtyメソッドを使用することもできます

于 2013-03-04T19:34:12.467 に答える
0

これは実際には質問1の解決策にすぎません。

フォームのonsubmit用に1つの追加のイベントハンドラーが必要になります。

そのイベントハンドラーで、isDirtyをfalseに更新します(フォームを今保存しているため、「ダーティ」ではなくなります)

tinyMCEを使ったことがないので、コメントすることはできません。

于 2013-03-04T19:30:04.903 に答える
0
plugins: "autosave"
autosave_ask_before_unload: true
toolbar: "restoredraft"
于 2018-11-13T16:07:50.287 に答える