通过 javascript 增加文本区域大小

发布于 2024-11-27 13:36:15 字数 731 浏览 0 评论 0原文

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”是最好的选择吗?我使用该事件来删除 a 内的值 文本框使用不属于的删除或退格键 “按键”。所以基本上它不会动态减少行数。

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 questions:

  1. How can I remove these if-else via for or while loop?
  2. Max size of the field should be 18 but right now it doesnt work
    exact at 18 even though I made cols="18".
  3. Is "onkeypress" the best option? I use the event to delete the value inside a
    textbox either use delete or backspace which are not part of
    "keypress". So basically it doesn't dynamically decrease the rows.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧时模样 2024-12-04 13:36:15

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;

这是未经测试的代码。

Textarea is the tag not an attribute value

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

For the javascript you are assigning the length to the variable, not the element.
So kinda like

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

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

This is untested code.

笑看君怀她人 2024-12-04 13:36:15

仅限 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;

Only to 1)

First you need to set the row to the test1 object not to the value:

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

Then you did skip the handling for the values of 36 and 54. This should be probably <= 36 and <= 54.

Then this:

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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文