我在我的 Web 应用程序中使用 contenteditable div 元素,我试图想出一个解决方案来限制该区域中允许的字符数量,一旦达到限制,尝试输入字符就什么也不做。这是我到目前为止所拥有的:
var content_id = 'editable_div';
//binding keyup/down events on the contenteditable div
$('#'+content_id).keyup(function(){ check_charcount(content_id, max); });
$('#'+content_id).keydown(function(){ check_charcount(content_id, max); });
function check_charcount(content_id, max)
{
if($('#'+content_id).text().length > max)
{
$('#'+content_id).text($('#'+content_id).text().substring(0, max));
}
}
这确实将字符数限制为“max”指定的数量,但是一旦 jquery .text() 函数设置了区域的文本,光标就会将自身重置到区域的开头。因此,如果用户继续输入,新输入的字符将被插入到文本的开头,而文本的最后一个字符将被删除。所以真的,我只需要一些方法将光标保持在 contenteditable 区域文本的末尾。