2

可能的重复:
自动调整文本区域

大家好,我正在尝试解决一个问题,但绝对无处可去。我要做的是在用户文本溢出其宽度时动态更改输入框的高度(类似于 Facebook 的状态更新文本框)。

您输入一个简短的更新,如果文本比文本框长,它会创建一个新行。我尝试使用 textarea,但无论出于何种原因,默认情况下都不能强制它恰好是 1 行。

有人知道这样做的简单方法吗?:(

4

2 回答 2

4

textarea您可以使用 CSS 高度和宽度参数手动控制尺寸。通过将按键事件绑定到textarea,您可以获取框中的文本数量并相应地调整高度。例如,这里有一些 jQuery,每输入 50 个字符,框的高度就会增加 20 个像素:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js">
</script>

<textarea id="textbox" style="height:20px;width:400px;"></textarea>

<script type="text/javascript">
$(document).ready(function() {
    $("#textbox").val('');
    $("#textbox").keypress(function() {
        var textLength = $("#textbox").val().length;
        if (textLength % 50 == 0) {
            var height = textLength/50;
            $("#textbox").css('height', 20+(height*20));
        }
    });
});
</script>

您可以调整这些值以获得所需的效果。

于 2010-12-12T14:40:33.390 回答
2

为了得到textarea伸展,试试这个(jQuery):http ://www.unwrongest.com/projects/elastic/ 。

至于恰好一行的高度,您可以rows="1"<textarea>标签中尝试,以及删除 CSS 样式。但是,有些浏览器可能会将文本区域的最小高度设置为多于一行。

另一种解决方案是使用div屏幕上的屏幕,当用户单击它时,使浏览器专注于隐藏的文本框。用户在隐藏的文本框中输入内容,然后通过div给出文本框的内容。JavaScript。棘手的一点是获得闪烁的光标,但您可以|在 div 中使用管道字符并使其闪烁,尽管这在您启动它时开始变得冗长。我会亲自再次尝试使用 textarea :-)

希望这可以帮助,

詹姆士

于 2010-12-12T14:19:21.500 回答