通过修改插件调用JEdtiable提交按钮

解决方案1:不使用TINYMCE

如果你没有使用带有JEditable的TinyMCE,那么请看下面的Arman P.的post。

解决方案2:使用TINYMCE

如果你正在使用TinyMCE,那么遗憾的是,Arman Ps方法不起作用。 Tinymce使用iframe编辑内容。 这会导致iframe在iframe具有焦点时“捕获”所有键盘事件的问题。 因此,您需要修改tinymce定制。

首先是在JEditable初始化中,你给保存按钮一个类,我们称之为“save_button”:

$(".edit").editable('ajax/save.php?editnotetext', { type : 'mce', submit : '', ... }); 

在TinyMCE初始化中,您必须创建一个捕获Ctrl + S的设置并提交save_button类的按钮:

  tinyMCE.init({ ... setup : function(ed) { ed.onKeyDown.add(function(ed, evt) { // catch crtl+s, use receiveShortCutEvent in the html-document if (evt.keyCode == 83 && evt.ctrlKey && !evt.shiftKey && !evt.altKey && !evt.metaKey) { evt.preventDefault(); $('.save_button').submit(); } }); } }); 

我想在用户按下Ctrl + S时调用提交(使用TinyMCE,这对用户来说是最合乎逻辑的)。 我按下ctrl + s之后有一个postMake TinyMCE + JEditable提交试图解决这个问题,但我认为问题是JEditable而不是TinyMCE。

我认为最好的方法是稍微修改插件,以便在我按Ctrl + S时提交表单。

不幸的是,到目前为止我所尝试的并不起作用。 下面的警报甚至没有被调用。 我认为问题与tinyMCE自定义有关,因为JEditable中可以使用Esc重置的内置选项不起作用。

代码(jquery.tinymcehelper.js)

  $.fn.tinymce = function(options){ return this.each(function(){ tinyMCE.execCommand("mceAddControl", true, this.id); }); } function initMCE(){ tinyMCE.init({ mode : "none", theme : "advanced", plugins: "save, table, tinyautosave, imagemanager, spellchecker, autoresize", theme_advanced_buttons1_add_before : "tinyautosave, code, separator, delete_table", theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,fontsizeselect,search,replace,|,bullist,numlist,|,outdent,indent,blockquote", theme_advanced_buttons2 : "undo,redo,link,unlink,code,|,forecolor,backcolor,|,insertimage,spellchecker", theme_advanced_buttons3 : "", theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left", content_css : "css/tinymce.nebula.css", width : "700" , setup : function(ed) { ed.onKeyPress.add(function(ed, evt) { // catch crtl+s, use receiveShortCutEvent in the html-document if (evt.keyCode == 83 && evt.ctrlKey && !evt.shiftKey && !evt.altKey && !evt.metaKey) { setTimeout(function(){ var e = {type : 'keypress'}; e.charCode = e.keyCode = e.which = 83; e.shiftKey = e.altKey = e.metaKey = false; e.ctrlKey = true; window.parent.receiveShortCutEvent(e); // !!! delegate created event object }, 1); } }); } }); } initMCE(); $.editable.addInputType('mce', { element : function(settings, original) { var textarea = $('