嗨,我有 ckeditor 和一个按钮用于保存 ckeditor 文本和 ajax .
<textarea id="editor1" name="editor1"></textarea>
<input type="button" name="send" id="send" value="Send" onclick="save()">
我想要删除按钮,当按键输入保存文本时,AJAX(运行保存功能)但是当按 回车键 在 ckeditor换行符 .以及如何使用"输入交换"按钮?
<textarea id="editor1" name="editor1"></textarea>
if (enter press in any where web page ) do save();
重要的部分是 CKEditor 中的内容是 iframe,因此那些尝试检查当前文档上的按键操作的解决方案将失败。
解决方案很简单,使用 CKEditor 事件,无需依赖任何外部库:
var editor = CKEDITOR.replace('editor1');
editor.on('key', function(ev) {
if (ev.data.keyCode==13)
{
ev.cancel();
console.log('enter');
}
});
您可以在此处进行测试:http://jsfiddle.net/zjkSR/(查看您的控制台)
这是我
不久前为一个网站创建的代码,它允许您在输入时提交,但是允许您按住 shift+enter 创建新行(就像自动提交的文本区域一样)。
它是使用 jQuery 编写的。
var TextBox = $('.autosubmit');
var code =null;
// on keypress do this
TextBox.keyup(function(e)
{
// get keycode
code= (e.keyCode ? e.keyCode : e.which);
// if keycode is 13 (enter)
if (code == 13 && e.shiftKey) {
var content = this.value;
var caret = getCaret(this);
this.value = content.substring(0,caret)+"'n"+content.substring(carent,content.length-1);
event.stopPropagation();
} else if (code == 13) {
$(this).closest("form").submit();
}
});
function getCaret(el) {
if (el.selectionStart) {
return el.selectionStart;
} else if (document.selection) {
el.focus();
var r = document.selection.createRange();
if (r == null) {
return 0;
}
var re = el.createTextRange(),
rc = re.duplicate();
re.moveToBookmark(r.getBookmark());
rc.setEndPoint('EndToStart', re);
return rc.text.length;
}
return 0;
}
但是,我不确定它是否可以在 CK 编辑器中工作。最好的方法是将这样的东西添加到你的配置文件中:
config.keystrokes =
[
[ CKEDITOR.ALT + 121 /*F10*/, 'toolbarFocus' ],
[ CKEDITOR.ALT + 122 /*F11*/, 'elementsPathFocus' ],
[ CKEDITOR.SHIFT + 121 /*F10*/, 'contextMenu' ],
[ CKEDITOR.CTRL + 90 /*Z*/, 'undo' ],
[ CKEDITOR.CTRL + 89 /*Y*/, 'redo' ],
[ CKEDITOR.CTRL + CKEDITOR.SHIFT + 90 /*Z*/, 'redo' ],
[ CKEDITOR.CTRL + 76 /*L*/, 'link' ],
[ CKEDITOR.CTRL + 66 /*B*/, 'bold' ],
[ CKEDITOR.CTRL + 73 /*I*/, 'italic' ],
[ CKEDITOR.CTRL + 85 /*U*/, 'underline' ],
[ CKEDITOR.ALT + 109 /*-*/, 'toolbarCollapse' ],
[ 13, 'save'] // note this line
];
这将在 Enter 上添加 save
事件,但将保留其他默认击键。
你需要
做的是用jQuery捕获keyup
或keydown
事件,并检查event
的keyCode
,看看是否按下了回车键。
例如:
$('body').on('keyup', function(event){
if (event.keyCode===13)
{
alert('enter key pressed!');
save();
}
});
Javascript key代码参考:http://asquare.net/javascript/tests/KeyCode.html
编辑:哎呀,误读问题 - 请参阅更新的答案。将选择器更改为目标正文而不是文本区域,但正如@KevinB所说,可能是一个坏主意。
$(document).ready(function () {
//set up the editor instance for ckeditor
var editor = CKEDITOR.replace(
'editor1',
{
toolbar:
[
['Source'],
['Cut', 'Copy', 'PasteText'],
['Undo', 'Redo', '-', 'SelectAll', 'RemoveFormat'],
['Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink'], ['SpecialChar']
]
}
);
$('body').on('keypress', function (e) {
if (e.target.id !== "editor1" && (e.keyCode ? e.keyCode : e.which) === 13)
{
alert(e.target.id); // jquery ajax save function
}
});
});
<textarea id="editor1" rows="5" cols="50"></textarea>