Javascript contenteditable div中不允许超过1个字符

Javascript contenteditable div中不允许超过1个字符,javascript,jquery,html,css,Javascript,Jquery,Html,Css,目前我正在做一个有纵横字谜的网页。因此,我无法在content editable div中键入多个字符。请注意,这是用于epub开发的。因此,我不能使用输入标记。请在这方面指导我 我试着在div中跟随脚本。但它不允许我在使用退格后键入任何字符 onkeypress="return (this.innerText.length >= 1 ? false : true )" 从那以后,我再过一天就要交给客户了。如果你解决了这个问题,那就太好了 先谢谢你 使用回调键按下。(适用于退格,删除)

目前我正在做一个有纵横字谜的网页。因此,我无法在content editable div中键入多个字符。请注意,这是用于epub开发的。因此,我不能使用输入标记。请在这方面指导我

我试着在div中跟随脚本。但它不允许我在使用退格后键入任何字符

onkeypress="return (this.innerText.length >= 1 ? false : true )"
从那以后,我再过一天就要交给客户了。如果你解决了这个问题,那就太好了

先谢谢你

使用回调键按下。(适用于退格,删除)


要允许其他控制键,您应该处理
onkeydown
事件,但请注意,在触发
onkeydown
时,键入的键尚未附加到文本字段。因此,我们将检查文本长度是否为0,而不是检查文本长度是否为1

$('div').keydown(function(e){
   return $.inArray(e.which, [8, 46, 37, 39]) > -1 || $(this).text().length == 0;
});
8
是退格键,
46
是删除键,
37
39
分别是左箭头和右箭头键


关于使用
返回false的子注释
要取消事件,通常我们应该使用
e.preventDefault()
,因为
返回false
也意味着调用了
e.stopPropagation()

它在firefox中失败。参考TeemuI的评论,我已经更新了工作代码,在所有browsers@shaunakde,我使用了下面的代码,在safari中听起来不错。从那时起,我正在为ipad开发epub。这就够了$('div').on('keypress',function(){return($(this).text().length
$('div').on('paste',function(e){
    e.preventDefault();
});
$('div').keydown(function(e){
   return $.inArray(e.which, [8, 46, 37, 39]) > -1 || $(this).text().length == 0;
});