You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让用户选择textarea显示的行数 [HTML] [JAVASCRIPT?]

通过数字输入框动态控制textarea的显示行数

这个需求实现起来很直观,核心就是监听数字输入框的变化,动态修改textarea的rows属性(用原生属性比纯CSS调整高度更贴合控件原生行为)。我给你写个完整的可运行示例,你直接就能用:

实现步骤与代码

1. 基础HTML结构

先搭好界面:一个带范围限制的数字输入框,搭配对应的提示文本,再放一个textarea控件:

<div style="margin: 10px 0;">
  <label for="rowPicker">选择显示行数:</label>
  <input 
    type="number" 
    id="rowPicker" 
    min="1" 
    max="20" 
    value="5"
    style="width: 80px; padding: 4px;"
  >
</div>
<textarea 
  id="textBox" 
  rows="5" 
  style="width: 100%; padding: 8px; box-sizing: border-box;"
  placeholder="在这里输入或查看文本..."
></textarea>
  • type="number"确保输入框只接受数字,min和max用来限制行数范围(你可以根据需求自行调整)
  • 初始value和textarea的rows设为一致,保证默认状态统一

2. JavaScript核心逻辑

接下来写监听逻辑,让输入框的数值和textarea的行数实时同步:

// 获取DOM元素
const rowPicker = document.getElementById('rowPicker');
const textBox = document.getElementById('textBox');

// 监听输入框的实时变化(包括输入、点击上下箭头)
rowPicker.addEventListener('input', function() {
  // 确保拿到的是有效数字,无效值默认 fallback 到1行
  const targetRows = parseInt(this.value) || 1;
  // 同步到textarea的rows属性
  textBox.rows = targetRows;
});

3. 体验优化(可选)

如果想让交互更严谨,可以加个失焦修正:当输入框失去焦点时,自动把超出范围的数值修正到边界值,避免无效值残留:

rowPicker.addEventListener('blur', function() {
  let currentValue = parseInt(this.value);
  const minRows = parseInt(this.min);
  const maxRows = parseInt(this.max);
  
  // 修正超出范围的数值
  if (currentValue < minRows) {
    currentValue = minRows;
  } else if (currentValue > maxRows) {
    currentValue = maxRows;
  }
  
  // 同步修正后的值到输入框和textarea
  this.value = currentValue;
  textBox.rows = currentValue;
});

效果说明

当你在数字输入框输入数值、点击上下箭头调整时,textarea的显示行数会实时跟着变化。如果输入了非数字内容,会自动 fallback 到1行;失去焦点时如果数值超出min/max范围,会自动修正到边界值,体验更流畅。

内容的提问来源于stack exchange,提问作者Nerks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:41:27