如何限制用户在Summernote文本框中输入字符?
解决Summernote编辑器预填充后禁止输入的问题
你的现有代码存在几个问题:
- 仅拦截了字母按键,数字、符号、删除/退格等可修改内容的按键未处理
e.KeyCode存在大小写错误,应为e.keyCode- 使用
e.target.blur()会导致编辑器失焦,体验不佳
以下是两种可靠的实现方式:
方式一:拦截所有输入类操作
通过回调阻止按键输入、粘贴等行为,保留编辑器原有外观但禁止内容修改:
$(document).ready(function() { $('#summernote').summernote({ callbacks: { onKeydown: function(e) { // 阻止所有可修改内容的按键默认行为 e.preventDefault(); }, onPaste: function(e) { // 阻止粘贴内容 e.preventDefault(); } } }); // 禁用右键菜单,防止右键粘贴 $('#summernote').on('contextmenu', function() { return false; }); });
方式二:设置为只读模式
更彻底的方案,直接将编辑区域设为不可编辑,还可隐藏工具栏避免误操作:
$(document).ready(function() { $('#summernote').summernote({ disableDragAndDrop: true, toolbar: [] // 隐藏工具栏 }); // 设置预填充内容 $('#summernote').summernote('code', '<p>这里是预填充的内容</p>'); // 标记编辑区域为只读 $('.note-editable').attr('contenteditable', 'false'); });
内容的提问来源于stack exchange,提问作者Wizard
相关产品推荐
相关产品推荐

