通过javascript增加textarea大小

时间:2011-07-31 15:44:18

标签: javascript jquery html css textarea

JavaScript的:

function x() {
    var value = document.getElementById("test1").value.length;
    if (value <= 18) {
        value.rows = 1;
    } else if (value > 18 && value < 36) {
        value.rows = 2;
    } else if (value > 36 && value < 54) {
        value.rows = 3;
    }
}

HTML:

<input type="textarea" id="test1" style="overflow:auto" rows="1" cols="18" onkeypress="javascript:x();">

3个问题:

  1. 如何通过for或while循环删除这些if-else
  2. 该字段的最大大小应为18,但现在它不起作用 尽管我做了cols="18",但确切地说是18岁。
  3. “onkeypress”是最好的选择吗?我使用该事件删除一个内部的值 文本框使用不属于的删除或退格 “按键”。所以基本上它不会动态减少行数。

2 个答案:

答案 0 :(得分:2)

Textarea是标签而非属性值

<textarea id="test1" style="overflow:auto" rows="1" cols="18">Text goes here</textarea>

对于javascript,您要为变量分配长度,而不是元素。 有点像

var a = document.getElementById("test1");

a.rows = (a.value.length / 18) + 1;

这是未经测试的代码。

答案 1 :(得分:0)

仅限1)

首先,您需要将行设置为test1对象而不是值:

document.getElementById("test1").rows = xxx;

然后你跳过了处理36和54的值。这应该是<= 36<= 54

然后这个:

var textarea = document.getElementById("test1")

if (value == 0) textarea.rows = 1;
else if (value > 54) textarea.rows = 3;
else textarea.rows = Math.floor((value - 1) / 18) + 1;