当我击中太空时,Contenteditable会增加一个

时间:2010-10-27 23:16:28

标签: javascript jquery contenteditable

我不知道为什么,但是如果你有一个启用了contenteditable的元素,那么当你第一次输入空格时,它会在元素中附加一个<br>标记。如果元素默认包含空格(<p contenteditable="true">this is a test</p>),那就没问题,但只要用户点击空格键(甚至复制+粘贴空格字符),Firefox就会添加{{1转到<br _moz_dirty="" />

有没有人知道为什么或简单的修复?这是我第一次玩满足感,所以很多这对我来说都是新的。目前,我只是使用似乎有效的<p>,但如果有人知道,我会喜欢一种解释和正确的方法来阻止它。

3 个答案:

答案 0 :(得分:0)

我今天遇到了这个问题,也不知道为什么Firefox会这么做。我已经这样处理了。

function zapTrailingLinebreak (editableNode) {
    let children = Array.from(editableNode.childNodes)

    children.forEach(child => {
        if (children.indexOf(child) == children.length - 1) {
            if (child.tagName && child.tagName === "BR") {
                editableNode.removeChild(child)
            }
        } 
    })
}

答案 1 :(得分:0)

你可以用 CSS 以非常简单的方式做到这一点

HTML

<span id="amt" contenteditable="true">100000</span>

CSS

span#amt br {
    display: none;
}

答案 2 :(得分:-1)

当用户回车时我使用preventDefault。也许您可以修改它以在用户使用空格键时返回正常空间。

if(e.keyCode==13 && e.shiftKey){ //enter && shift
    e.preventDefault(); //Prevent default browser behavior
    //this.html(this.html+"<br>");
}
if(e.keyCode==13){ //enter
    e.preventDefault(); //Prevent default browser behavior
}