Javascript 从TinyMCE中删除onSubmit事件挂钩

Javascript 从TinyMCE中删除onSubmit事件挂钩,javascript,jquery,asp.net,tinymce,Javascript,Jquery,Asp.net,Tinymce,我目前正在开发一个用户可以编辑一些HTML的页面。为了使他能够以一种很好的方式完成这项工作,我使用了TinyMCE,因为它有一个相当不错的界面。问题是底层框架是ASP.NET MVC,它不允许轻松提交HTML。当用户提交的HTML被传递到另一个后端时,我宁愿不只是声明提交能够包含HTML。相反,在提交之前,我只想在表单字段上运行escape或类似程序 这种方法在没有TinyMCE的情况下可以正常工作,但在TinyMCE的情况下,它似乎有一个用于onSubmit的钩子。由于我还没有找到一种方法来为

我目前正在开发一个用户可以编辑一些HTML的页面。为了使他能够以一种很好的方式完成这项工作,我使用了TinyMCE,因为它有一个相当不错的界面。问题是底层框架是ASP.NET MVC,它不允许轻松提交HTML。当用户提交的HTML被传递到另一个后端时,我宁愿不只是声明提交能够包含HTML。相反,在提交之前,我只想在表单字段上运行escape或类似程序

这种方法在没有TinyMCE的情况下可以正常工作,但在TinyMCE的情况下,它似乎有一个用于onSubmit的钩子。由于我还没有找到一种方法来为TinyMCE钩住这个函数,或者阻止它发生,我有点卡住了。有效的方法是在提交之前删除编辑器,但这有点笨重,而且相当明显

那么,将TinyMCE的onSubmit事件挂钩或从TinyMCE中移除挂钩的正确/最佳方法是什么

下面的代码提供了一个简单的工作示例。要了解我的意思,请运行它并单击“显示值”。您将看到textarea内容是未被切换的。如果单击Escape,它将在文本区域上运行Escape。你可以用Show Value检查它。如果继续单击Submit并随后检查该值,您将发现它不再转义

<!DOCTYPE html>
<html>
<head>
    <script src='http://code.jquery.com/jquery-1.10.2.min.js'></script>
    <script src='http://cloud.tinymce.com/stable/tinymce.min.js'></script>
    <script>
    tinymce.init({
        selector: 'textarea',
        setup: function(editor){
            // Let the editor save every change to the textarea
            editor.on('change', function(){
                tinymce.triggerSave();
            });
        }
    });

    $(document).ready(function(){
        $("form").submit(function(e){
            // Do one final save
            tinymce.triggerSave();

            // Escape every textarea
            $("textarea").each(function(k,v){
                $(this).val(escape($(this).val()));
            });

            // Prevent submit for this example
            return false;
        });

        $("#showvalue").click(function(){alert($("textarea").val())})
    });
    </script>
</head>

<body>
    <form method="post" action="URL">
        <textarea><html>Here is some code<strong>With some HTMl</strong></html></textarea>
        <button>Submit</button>
        <button type="button" onclick="document.querySelectorAll('textarea')[0].value = escape(document.querySelectorAll('textarea')[0].value)">Escape</button>
        <button type="button" id="showvalue">Show Value</button>
    </form>
</body>
</html>

实际的解决办法似乎相当简单。正如您在TinyMCE的init中所看到的,已经有一个操作绑定到的变更事件。现在,绑定到submit事件并返回false似乎是可行的

tinymce.init({
    selector: 'textarea',
    setup: function(editor){
        // Let the editor save every change to the textarea
        editor.on('change', function(){
            tinymce.triggerSave();
        });

        // Do nothing when submitting the form
        editor.on('submit', function(){
            return false;
        });
    }
});