javascript - Contenteditable div 或 span 调整大小直到达到最大长度?

标签 javascript html css

是否有可能在具有最大长度的浏览器中有一个 contenteditable div - 并且它会自动调整大小直到达到最大长度?

基本上我想要一个可编辑的元素,它实际上只占用显示所需的空间,但具有最大长度属性。

EDITABLE_____________NORMAL WORD

我想确保 editalbe 调整大小并且只消耗所需的量。 原因是我想从中生成 PDF。所以多余的空间将以任何方式被 trim 。所以在浏览器中我们也应该看到相同的内容。解决起来太复杂了?

EDITABLE NORMAL WORD

我发现的一个相关问题。

Limiting Number of Characters in a ContentEditable div

最佳答案

要使 contentEditable 整齐地适合您,您只需将其设置为非 block 级元素或在 CSS 中将其设置为:

.textfield {display:inline;}

要限制可以输入的字符数量需要 JavaScript...

首先更新您的 contenteditable 元素以包含 max 属性:

<div contenteditable="true" name="choice1" class="textfield" max="15">EDITABLE</div>

然后使用 JS 来监听这些元素上的按键,并且只允许它们直到达到最大长度:

var textfields = document.getElementsByClassName("textfield"); 
for(i=0; i<textfields.length; i++){
    textfields[i].addEventListener("keypress", function(e) {
        if(this.innerHTML.length >= this.getAttribute("max")){
            e.preventDefault();
            return false;
        }
    }, false);
}

Here's the DEMO

更新:将其扩展为也包含 min 长度是相当简单的。 Here's an updated jsFiddle that does just that.

关于javascript - Contenteditable div 或 span 调整大小直到达到最大长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22133458/

相关文章:

javascript - 在Javascript中根据子数组的对象重新分类父数组

javascript - 如何在 html 中读出所有子项的宽度?

html - bootstrap - 使用完整的容器空间将多个按钮与大文本框对齐

javascript - jquery延迟淡入循环

Javascript 多次 click() 事件不会在 IE 中触发

javascript - Google map `region` 参数是自动确定的吗?

php - 将表单选择选项值发送到数据库不起作用

jquery - 动画元素从一个列表移动到另一个

javascript - Bootstrap 标题和主体的行在 Bootstrap 响应表中未正确对齐

css - 为大表格打印 CSS