Javascript 从TinyMCE中删除onSubmit事件挂钩
我目前正在开发一个用户可以编辑一些HTML的页面。为了使他能够以一种很好的方式完成这项工作,我使用了TinyMCE,因为它有一个相当不错的界面。问题是底层框架是ASP.NET MVC,它不允许轻松提交HTML。当用户提交的HTML被传递到另一个后端时,我宁愿不只是声明提交能够包含HTML。相反,在提交之前,我只想在表单字段上运行escape或类似程序 这种方法在没有TinyMCE的情况下可以正常工作,但在TinyMCE的情况下,它似乎有一个用于onSubmit的钩子。由于我还没有找到一种方法来为TinyMCE钩住这个函数,或者阻止它发生,我有点卡住了。有效的方法是在提交之前删除编辑器,但这有点笨重,而且相当明显 那么,将TinyMCE的onSubmit事件挂钩或从TinyMCE中移除挂钩的正确/最佳方法是什么 下面的代码提供了一个简单的工作示例。要了解我的意思,请运行它并单击“显示值”。您将看到textarea内容是未被切换的。如果单击Escape,它将在文本区域上运行Escape。你可以用Show Value检查它。如果继续单击Submit并随后检查该值,您将发现它不再转义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的钩子。由于我还没有找到一种方法来为
<!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;
});
}
});