内联块SPAN不允许输入换行符

时间:2015-10-03 22:36:30

标签: html css twitter-bootstrap

所以我正在尝试使用设置为display: inline-block的SPAN elemenet,因此它可以包含多行。

当我手动输入文字和文字到达EOL时,它会自动跳转到下一行。

但是我不能使用ENTER来插入换行符,因为游标会跳出整个块。

http://jsfiddle.net/7yLLg2rz/1/

<div id="window-kitkat" class="form-control" contenteditable="true">
    <div class="skeleton-block" contenteditable="false">
        <span class="skeleton">
            <span class="skeleton-edit" contenteditable="true">TOPIC HEADING</span>
        </span>
        <span class="skeleton">
            <span>Cx: </span>
            <span class="skeleton-edit" contenteditable="true"></span>
        </span>
        <span class="skeleton">
            <span>Px: </span>
            <span class="skeleton-edit" contenteditable="true"></span>
        </span>
        <span class="skeleton">
            <span>Wx: </span>
            <span class="skeleton-edit" contenteditable="true"></span>
        </span>
        <span class="skeleton">
            <span>Tx: </span>
            <span class="skeleton-edit" contenteditable="true"></span>
        </span>
        <span class="skeleton">
            <span>PEARLS: </span>
            <span class="skeleton-edit" contenteditable="true"></span>
        </span>
    </div>
</div>

// Skeleton

.skeleton {
  display: block;
}

.skeleton > span {
  display: inline;
}

.skeleton-edit, .answers-edit {
  width: 100%;
  background-color: #C0FFB3;
  display: inline-block !important;
  min-height: 20px;
}

2 个答案:

答案 0 :(得分:2)

一种方法是在输入按键时人为地创建换行符:

var spans = document.querySelectorAll('。skeleton-edit');

span.addEventListener('keypress', function (event) {
    if (event.keyCode == 13) {
        // prevent default action
        event.preventDefault();

        // append new line
        this.innerHTML += (this.innerHTML.indexOf('<br>') > -1 ? '<br>' : '<br><br>');

        // focus at the end of text
        var range = document.createRange();
        var sel = window.getSelection();
        range.setStart(this.childNodes[this.childNodes.length - 1], 0);
        range.collapse(true);
        sel.removeAllRanges();
        sel.addRange(range);
    }
}, false);

DEMO http://jsfiddle.net/7yLLg2rz/3/

答案 1 :(得分:1)

尝试按Shift + Enter在文本中添加新行而不离开文本框。

另一种方法是使用表格。