是否可以禁用textarea的多行选项?

tes*_*icg 14 html textarea

当然,我可以使用标准的html文本框,但出于某种原因我需要文本区域.

那么,是否可以禁用textarea的多行选项?

ton*_*edz 14

您可以使用colsrows属性设置textarea的大小,并使其在CSS中不可调整大小,但不能阻止用户添加多行.即使该区域太小,也会出现一个滚动条,让它们可以根据需要编写多行.

如果你真的只需要一行,我建议将rows属性设置为1,并检查输入是否有一行Javascript.

在html中:

<textarea name="a"  cols="5" rows="1" ></textarea>
Run Code Online (Sandbox Code Playgroud)

在CSS中:

textarea{
    resize: none; 
    #You can use resize: horizontal if you just want to disable vertical resize
}
Run Code Online (Sandbox Code Playgroud)

不过,我建议使用<input type="text" ... />你为什么要避免它?

  • 这可能不是OP的用例,但我在构建基本丰富的单行输入时遇到了这个问题(允许在文本框中设置某些单词或单词组的样式).为了达到这个目的,我用`pointer-events:none;`覆盖了一个带样式的div.要使其与滚动输入保持同步(当用户键入边缘时),您需要侦听滚动事件.不幸的是,只有一个textarea会触发一个(输入拒绝).所以在这种情况下,必须避免输入. (6认同)

Sla*_*ser 11

是的,每次用户输入内容时,可以使用input事件删除所有换行符。

<textarea oninput="this.value = this.value.replace(/\n/g,'')"></textarea>
Run Code Online (Sandbox Code Playgroud)

或者用更文明的方式:

html

<textarea id="ta"></textarea>
Run Code Online (Sandbox Code Playgroud)

js

document.getElementById('ta').addEventListener('input', function(e){
    this.value = this.value.replace(/\n/g,'')
});
Run Code Online (Sandbox Code Playgroud)

JSFiddle 上的演示


小智 8

你可以通过设置在保持一行的所有文本rows="1"<textarea>,像其他答案建议,然后将下面的CSS到文本区:

resize: none;
white-space: nowrap;
overflow-x: scroll;
Run Code Online (Sandbox Code Playgroud)

此CSS将阻止单行换行,同时通过提供滚动条来导航溢出可见区域的任何文本,从而使整行保持可见.

  • 警告:即使在使用`white-space:nowrap`将使它显示1行(`rows ="1"`或其他)上的所有内容时,它仍然会占用用户可能在文本框中输入的所有字符,包括不是的回车符显示. (2认同)

小智 1

使用 rows=1 仅显示 1 行。您可以从此链接获取更多信息