这是我的一个站点创建而回代码,它可以让你提交的输入,但是可以让你按住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
];
这将增加对进入save
事件,但将保留其他默认按键。
听
的解决方案,因为这使用CKEditor的事件和不依赖于任何外部库一样简单按键事件,检查是否输入。如果是输入,则保存表单。这听起来像一个非常糟糕的主意,虽然,它可以改变一个textarea的正常使用,并且可以与 –
您可能需要使用'textarea'的'input' instad键盘导航干扰。 –
如何使用ckeditor输入文字?输入事件可以插入完整的代码? –