如果用户在TinyMCE插件的文本区域中进行了更改,则我试图在用户离开页面时触发警告。

有我的代码。如果我使用普通形式的textarea,它会起作用,但是当我将'onkeydown'事件添加到微小对象的textarea时,效果并不理想。我已经通过浏览器控制台批准了“ cambios”的价值,但我发现它从未改变其价值。

JS:

var cambios = false;

function change_cambios (){ cambios = true;}

window.onbeforeunload = function() {
    if(cambios) {
        return confirm('Are you sure?');
    }
    return;
}


HTML:

    <form id="formulari" method="post" >
        <textarea id="ap0sub2" name="area" onkeydown="change_cambios();"></textarea>
    </form>


如果我在tinyMCE插件中使用它,那将完美地工作。但是当我包括文本编辑器时,“ cambios”的值仍然为false。

有任何想法吗?

非常感谢!

最佳答案

tinyMCE隐藏textarea并显示其可编辑的div内容,因此您的textarea上没有按键操作。初始化时,您需要使用tinyMCE的方法添加事件侦听器:

tinyMCE.init({
   selector:'#ap0sub2',
   setup : function(ed) {
                  ed.on('keydown', function(e) {
                     cambios = true;
                     console.log(cambios);
                  });
            }
});


工作演示:http://jsfiddle.net/exmdg7ha/

09-25 18:33