我尝试以这种方式捕获CKEditor保存按钮上发生的click事件
var element = CKEDITOR.document.getById('CKEditor1');
element.on('click', function (ev) {
//ev.removeListener();
alert('hello');
return false;
});
但它无效。当我点击CKEditor的保存按钮时,就会发生回发。如果可能的话,帮助我使用正确的代码示例捕获点击事件发生在CKEditor的保存按钮上。感谢
CKEDITOR.plugins.registered['save'] = {
init: function (editor) {
var command = editor.addCommand('save',
{
modes: { wysiwyg: 1, source: 1 },
exec: function (editor) { // Add here custom function for the save button
alert('You clicked the save button in CKEditor toolbar!');
}
});
editor.ui.addButton('Save', { label: 'Save', command: 'save' });
}
}
上面的代码我正在寻找。上面的代码帮助我捕获工具栏中的保存按钮的单击事件。感谢
答案 0 :(得分:8)
这是(在我看来)更好/更清洁的方式来完成你已经想到的。这只会替换保存按钮运行的javascript,这意味着它不会将保存按钮移出其原始工具栏组:
HTML:
<textarea id="CKEditor1"></textarea>
的javascript:
<script>
// Need to wait for the ckeditor instance to finish initialization
// because CKEDITOR.instances.editor.commands is an empty object
// if you try to use it immediately after CKEDITOR.replace('editor');
CKEDITOR.on('instanceReady', function (ev) {
// Create a new command with the desired exec function
var overridecmd = new CKEDITOR.command(editor, {
exec: function(editor){
// Replace this with your desired save button code
alert(editor.document.getBody().getHtml());
}
});
// Replace the old save's exec function with the new one
ev.editor.commands.save.exec = overridecmd.exec;
});
CKEDITOR.replace('CKEditor1');
</script>
答案 1 :(得分:0)
preventDefault()
的如果调用此方法,则不会触发事件的默认操作 请试用此代码:
$(document).on('click', '#CKEditor1', function(ev){
ev.preventDefault();
alert('hello');
return false;
});
This可能会对您有所帮助。
答案 2 :(得分:0)
Description: If this method is called, the default action of the event will not be triggered.
添加此...
ev.preventDefault();
代码
$('#CKEditor1').on('click', function (ev) {
ev.preventDefault();
alert('hello');
return false;
});
答案 3 :(得分:0)
在提交按钮上使用mousedown
而不是click
,并添加ev.preventDefault
以停止提交。
var element = CKEDITOR.document.getById('CKEditor1');
element.on('mousedown', function (ev) {
ev.preventDefault();
alert('hello');
return false;
});
答案 4 :(得分:0)
转到ckeditorcontrol属性并找到prerender事件,以便您可以使用prerender事件将文本保存在数据库中。
protected void CKEditorControl2_PreRender(object sender, EventArgs e)
{
if (!string.IsNullOrWhiteSpace(CKEditorControl2.Text))
{
// write here what you want to save in your database.
}
}