将可满足的div限制为可见部分

时间:2014-01-12 21:52:04

标签: javascript jquery html css textarea

我有一个div,其contenteditable=true。现在,如果我输入更长的文本,它会越过底部。我不希望这样。我希望文本停止并阻止任何其他文本。

这就是我想要的解决方案:http://jsfiddle.net/37Jnn/

这里的问题是这是textarea,而且我的可编辑div无效。

这是我的可编辑div:http://jsfiddle.net/N4tTp/1/

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

归功于Mohsen,但我认为这篇文章应该有一个正式答案: 你正在寻找css风格:

overflow:hidden;

关于div的问题。要使div可滚动,请将overflow设置为:

overflow:auto;

答案 1 :(得分:0)

您可以保存div的状态(原始和每次成功输入后),输入事件后检查div大小,如果大小太大则恢复状态。

这个解决方案优于overflow:hidden;的优点是div实际上没有额外的内容。如果有人在输入太多后选择其中的所有文本,则额外的字符不会成为选择的一部分。

答案 2 :(得分:0)

虽然这不是最优雅的方式,但确实有效。

HTML:

<div class="myDiv" contenteditable=true>This text is in the box.... but this is not in the box</div>

CSS:

.myDiv {
    background: #acacac;
    width:60px;
    height: 60px;
    overflow: hidden;
}

使用Javascript:

var text = undefined;
$(function(){
    while($('.myDiv').get(0).scrollHeight > $('.myDiv').height()) {
        $('.myDiv').text($('.myDiv').text().slice(0,-1));
    }
});
$('.myDiv').bind('keydown', function(e) {
    text = $('.myDiv').text();
    if($('.myDiv').get(0).scrollHeight > $('.myDiv').height() && e.which != 8) {
        e.preventDefault();
    }
});
$('.myDiv').bind('keyup', function() {
    if($('.myDiv').get(0).scrollHeight > $('.myDiv').height()) {
        $('.myDiv').text(text);
    }
 });