当然,我可以使用标准的html文本框,但出于某种原因我需要文本区域。
那么,是否可以禁用textarea的多行选项?
答案 0 :(得分:13)
您可以使用cols
和rows
属性设置textarea的大小,并使其在CSS中不可调整大小,但不能阻止用户添加多行。即使该区域太小,也会出现一个滚动条,让它们可以根据需要编写多行。
如果你真的需要只获得一行,我建议将rows
属性设置为1,并检查输入是否只有一行Javascript。
在html中:
<textarea name="a" cols="5" rows="1" ></textarea>
在CSS中:
textarea{
resize: none;
#You can use resize: horizontal if you just want to disable vertical resize
}
不过,我建议使用<input type="text" ... />
为什么要避免使用它?
答案 1 :(得分:8)
您可以按照rows="1"
上的<textarea>
设置将所有文字保留在一行中,就像其他答案所建议的那样,然后将以下CSS应用到文字区域:
resize: none;
white-space: nowrap;
overflow-x: scroll;
此CSS将阻止单行包装,同时通过提供滚动条来导航溢出可见区域的任何文本,从而使整行保持可见。
答案 2 :(得分:2)
您可以在文本区域中使用wrap="off"
属性以单行显示。
<textarea wrap="off"></textarea>
答案 3 :(得分:1)
使用rows = 1仅显示1行。您可以从此link
获取更多信息答案 4 :(得分:1)
您可以将rows
属性设置为1。
无法禁用多线
答案 5 :(得分:1)
是的,有可能使用input
事件在用户每次输入内容时删除所有换行符。
<textarea oninput="this.value = this.value.replace(/\n/g,'')"></textarea>
或更文明的方式:
html
<textarea id="ta"></textarea>
js
document.getElementById('ta').addEventListener('input', function(e){
this.value = this.value.replace(/\n/g,'')
});
答案 6 :(得分:0)
使用此纯JS代码,将不允许用户在textarea中输入多行
var textArea = document.getElementsByTagName("textarea")[0];//your desired TextArea
textArea.onkeydown = function (e) {
if (e.keyCode == 13) { e.preventDefault(); }
};
注意::如果用户复制多行文本并将其粘贴到TextArea中,则此方法将不起作用。
答案 7 :(得分:-2)
以下jQuery代码段强制textarea显示在一行中。
$(document).ready(function(){
$('textarea').each(function(){$(this).attr('rows', 1);});
});