javascript - TinyMCE - 添加键绑定(bind) CNRTL-S COMMAND-S 以调用 AJAX 保存功能

标签 javascript tinymce textarea

我想学习如何绑定(bind) CNRTL-S 或 COMMAND-S 来调用我页面上的函数,该函数通过 AJAX 保存文本区域的内容

如何绑定(bind)这两个命令?当它只是一个文本区域时,我曾经使用过以下内容,但是自从添加了 TinyMCE 之后它就不再有效了。有什么建议吗?

// Keybind the Control-Save
jQuery('#text_area_content').bind('keydown', 'ctrl+s',function (evt){
saveTextArea();
    return false;
});
 // Keybind the Meta-Save Mac
jQuery('#text_area_content').bind('keydown', 'meta+s',function (evt){
saveTextArea();
    return false;
});

谢谢

最佳答案

为了使用自定义方法进行保存,我在 tinymce.init 方法中声明了我的保存函数

tinyMCE.init({
        // General options
        mode: "none",
        /* some standard init params, plugins, ui, custom styles, etc */            


        save_onsavecallback: saveActiveEditor,
        save_oncancelcallback: cancelActiveEditor
    });

然后我定义函数本身

function saveActiveEditor() {
     var activeEditor = tinyMCE.activeEditor;
     var saveUrl = "http://my.ajax.path/saveStuff";
     var idEditor = activeEditor.id;
     var contentEditor = activeEditor.getContent();
     /* the next line is for a custom language listbox to edit different locales */
     var localeEditor = activeEditor.controlManager.get('lbLanguages').selectedValue;

     $.post(saveUrl ,
            { id: idEditor, content: contentEditor, locale: localeEditor },
            function(results) {
                if (results.Success) {
                    // switch back to display instead of edit
                    return false;
                }
                else {
                    activeEditor.windowManager.alert('Error saving data');
                    return false;
                }
            },
            'json'
        );
        return false;
 }

不要忘记return false 来覆盖将数据回发到服务器的默认保存操作。


编辑添加:我一次只允许用户更改一个 tinymce 实例。您可能想将定位当前实例更改为其他内容:)


编辑 #2:TinyMce 已经捕捉到 Ctrl+s 绑定(bind)来处理数据。由于它还可以清理 html 并能够处理保存时给出的特定规则,我建议的解决方案是将您的保存方式插入 tinyMce,而不是完全覆盖 Ctrl+s 绑定(bind)

关于javascript - TinyMCE - 添加键绑定(bind) CNRTL-S COMMAND-S 以调用 AJAX 保存功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4280884/

相关文章:

javascript - 我如何检查 Angular 中的 Mobx 商店是否为空?

html - 避免在 textarea 文本上换行

javascript - 在javascript中重置文本区域高度

javascript - 为什么这个加法或减法不起作用?

javascript - 当您双击日文文本时,Chrome 如何决定突出显示的内容?

jquery - 通过 jQuery 添加按钮来触发 html 代码片段到tinyMCE编辑器中

asp.net-mvc - Html.BeginForm() 工作正常, Html.BeginForm ("action","controller")忽略 [AllowHtmlAttribute]

javascript - 我该如何解决这个 onclick-onblur 问题?

javascript - 无法读取 setInterval 中的属性

tinymce - IE7 和 TinyMCE 与 Plone