防止在 contenteditable div 中按 Enter 键添加换行符标记

4

我有一个具有contenteditable属性的div,当按下回车键时,我希望在文本中添加一个new line字符。

我可以这样实现:

$("#editable").on("keydown", function(e) {
    if (e.keyCode === 13) {
        document.execCommand('insertHTML', false, '\n');
    }
});

这段代码是可以正常工作的,但它会在文本中添加<br>标签(在chrome浏览器中还包括<div>标签)。

我需要防止在按下回车键时添加这些标签。

我知道两种方法:

1)使用preventDefault()方法,但使用此方法后,用户需要按两次回车键才能换行。这很糟糕。

2)使用replace()方法从整个文本中删除这些标签。但在这种情况下,所有这些标签(甚至是用户特意在文本中输入的标签)都将被删除,所以这也是不好的方法。

如何解决这个问题?

1个回答

0

试试这个:

$("#editable").on("keydown", function(e) {
      return e.which != 13; 
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接