问题:
我正在尝试使用quill.js创建丰富的文本围栏内容编辑元素。我很难弄清楚如何提交身体,而没有我想用来提交输入的Enter Trigger不必要的Newline。
我尝试了什么:
$(quill.editor.root).on('keydown', function (e) {
if (e.keyCode === 13) {
e.preventDefault();
e.stopPropagation();
submit();
}
});
Quill还会在
var keyboard = quill.getModule('keyboard');
delete keyboard.hotkeys[13];
A API已在键盘模块中添加,但尚未发布任何官方版本。
这是我在2021年所做的,以防止输入密钥,并提交编辑器内容,但在Shift
+enter上允许新行:
removeHotkey
您可以使用它来禁用Enter键:
this.editor = new Quill(this.editorContainer.nativeElement, {
placeholder: 'Message',
modules: {
keyboard: {
bindings: {
shift_enter: {
key: 13,
shiftKey: true,
handler: (range, ctx) => {
console.log(range, ctx); // if you want to see the output of the binding
this.editor.insertText(range.index, '\n');
}
},
enter: {
key: 13,
handler: () => { /* submit form */ }
}
}
}
}
});
:Quill.js没有稳定的2.0.0版。最新版本为1.3.7,截至2022年5月26日。请参阅:
https://github.com/quilljs/quill/releaseshttps://quilljs.com/docs/modules/keyboard/#configuration
thatMeans:使用当前的Quill.js 1.3.7的唯一工作解决方案是Reed回答的一种,2021年Jun 29,2021 at 2:40.
问题,但仍然相关,并且 @jhcen的答案至少在2.0.0中已经过时了。扁平防止羽毛笔聆听某些钥匙可以做的:
var keyboard = quill.getModule('keyboard');
keyboard.bindings['Enter'] = null;
keyboard.bindings['13'] = null;
但要更安全并封装了此功能,您可以将绑定暂时存储在某个地方,然后在您的代码之后还原:
var keyboard = quill.getModule('keyboard');
keyboard.bindings['Enter'] = null;
usage:
function disableKey(keyName) {
var tempBindings = null;
var keyboard = quill.getModule('keyboard');
tempBindings = keyboard.bindings[keyName];
keyboard.bindings[keyName] = null;
return tempBindings;
}
function reenableKey(keyName,bindings) {
var keyboard = quill.getModule('keyboard');
keyboard.bindings[keyName] = bindings;
}