Javascript 制作TinyMCE+;按下ctrl+后提交表格;s
更新日期:2011年5月13日 请在我下面的答案中找到解决方案Javascript 制作TinyMCE+;按下ctrl+后提交表格;s,javascript,jquery,events,tinymce,jeditable,Javascript,Jquery,Events,Tinymce,Jeditable,更新日期:2011年5月13日 请在我下面的答案中找到解决方案 更新日期:2011年5月5日 所以现在的问题是,我想在按下Ctrl+S后调用JetTable submit按钮。伟大的Thariama已经为TinyMCE显示了Ctrl+S部分,所以现在我必须弄清楚如何让JEditable提交 按下Ctrl+S后,我试图找到submit按钮,并按。不起作用 以下是我的表格初始化相关代码: //Edit Note $(function(){ $(".edit").editable('a
更新日期:2011年5月5日 所以现在的问题是,我想在按下Ctrl+S后调用JetTable submit按钮。伟大的Thariama已经为TinyMCE显示了Ctrl+S部分,所以现在我必须弄清楚如何让JEditable提交 按下Ctrl+S后,我试图找到submit按钮,并按。不起作用 以下是我的表格初始化相关代码:
//Edit Note
$(function(){
$(".edit").editable('ajax/save.php?editnotetext', {
type : 'mce',
submit : '<button class="save_button">Save</button>',
cancel: 'Cancel',
event: 'dblclick',
indicator : 'Saving...',
tooltip : 'Doubleclick to edit...',
onblur: 'ignore',
width : '700px',
height : '100px'
});
});
任何想法都欢迎
2011年4月28日 将TinyMCE与表一起使用(根据)。编辑完我的内容后,我想按Ctrl+S进行提交。不幸的是,没有提交任何内容,我只剩下我的原始内容。如果我按“提交”按钮,它确实可以工作 我试过:
$(function(){
$(".edit").keypress(function(event) {
if ((event.which == 115 && event.ctrlKey)){
alert("you pressed ctrl-s!");
$(this).submit();
}
});
$(".edit").editable('ajax/save.php?editnotetext', {
type : 'mce',
submit : 'save',
cancel: 'cancel',
indicator : 'Saving...',
tooltip : 'Click to edit...',
onblur: 'ignore',
width : '500px',
height : '100px'
});
});
看看这些用于创建键盘快捷键的jquery插件。这可能就是你想要的
这是一件有点特殊的事情。这里的问题是tinymce(以及每个强大的rte)使用iframe来编辑内容。这导致了一个问题,即当iframe具有焦点时,iframe将“捕获”所有键盘事件。我将向你展示我如何解决这个问题 在tinymce init(或一个插件)中,您需要设置以下内容
// 83 instead of 73 as keyCode here !!!!!!!!
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) {
setTimeout(function(){
var e = { type : 'keydown'};
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);
}
});
},
在html文档(或包含的js文件)中,您需要设置
// init in the main document
// Keydown events on the main document will call receiveShortCutEvent
$(document).bind('keydown', function(e)
{
var handled = receiveShortCutEvent(e);
return !handled;
});
您还需要在此处定义要为哪个快捷方式执行的操作
var receiveShortCutEvent = function(e)
{
if (e.ctrlKey){
//console.log('e.keyCode:',e.keyCode);
var handled = true; // default case set this to false which lets the browser execute a browsershortcut if existent
switch (e.keyCode){ // be careful that keyCode may differ in browsers sometimes
case 83 :
alert("you pressed ctrl-s!");
break;
default : handled = false;
}
}
解决方案1:不使用TINYMCE 如果你没有将TinyMCE与JEditable一起使用,请查看Arman p.在上的帖子 解决方案2:使用TINYMCE 正如Thariama指出的,Tinymce使用iframe来编辑内容。这导致了一个问题,即当iframe具有焦点时,iframe将“捕获”所有键盘事件。因此,您需要修改tinymce定制 首先是在表初始化中,给save按钮一个类,我们称之为“save_button”:
嗨,洛里扎克。这可能会有所帮助,但不幸的是,真正的问题是TinyMCE/JEditable,因为我不确定脚本到底发生了什么,也没有足够的技术能力来解决它。例如,一个人如何将Ctrl+S键“绑定”到JEditable创建的submit按钮上?它看起来非常可爱,将秘密地将其添加到一个项目中,让他们大吃一惊!谢谢塔里亚马。我对最后一部分有疑问。我可以把它放在第二个代码后面吗?如果我这样做,我的js就不起作用了。我还尝试了
$(document).ready(函数receiveShortCutEvent(e){
。所有其他的javscript都可以工作,但Ctrl+S不能。你有没有在receiveShortCutEvent函数中添加一个警报来查看该函数是否被调用?我编辑了我的帖子,看起来里面仍然有一个旧的键码(72而不是83)你好,Thariama。警报现在被调用,但没有提交任何内容。是否有一行代码我应该“取消注释”?谢谢你的帮助。
var receiveShortCutEvent = function(e)
{
if (e.ctrlKey){
//console.log('e.keyCode:',e.keyCode);
var handled = true; // default case set this to false which lets the browser execute a browsershortcut if existent
switch (e.keyCode){ // be careful that keyCode may differ in browsers sometimes
case 83 :
alert("you pressed ctrl-s!");
break;
default : handled = false;
}
}
$(".edit").editable('ajax/save.php?editnotetext', {
type : 'mce',
submit : '<button class="save_button">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();
}
});
}
});