根据输入到字段中的字符数动态扩展输入类型“文本”的高度
类似于下面的JSFiddle(我将其添加为书签,并且不知道原始问题来自何处):
<input type="text" value="" placeholder="Autosize" data-autosize-input='{ "space": 10 }' />input {
width: 200px;
min-width: 200px;
max-width: 300px;
transition: width 0.25s;
}
有没有一种方法可以将文本字段的宽度固定为例如200px,如果用户添加的文本超过200px可以容纳的文本的 ,文本字段的 会增加吗?如果用户需要更多空间来键入内容,我希望添加更多行…因此我需要 而不是width来动态调整大小。
谢谢!
回答:
正如其他人解释的那样,input
字段不能包含多行文本,您应该使用它textarea
来模仿输入字段,并使用jQuery使它自动垂直调整大小(具有固定宽度)。
:
//This span is used to measure the size of the textarea//it should have the same font and text with the textarea and should be hidden
var span = $('<span>').css('display','inline-block')
.css('word-break','break-all')
.appendTo('body').css('visibility','hidden');
function initSpan(textarea){
span.text(textarea.text())
.width(textarea.width())
.css('font',textarea.css('font'));
}
$('textarea').on({
input: function(){
var text = $(this).val();
span.text(text);
$(this).height(text ? span.height() : '1.1em');
},
focus: function(){
initSpan($(this));
},
keypress: function(e){
//cancel the Enter keystroke, otherwise a new line will be created
//This ensures the correct behavior when user types Enter
//into an input field
if(e.which == 13) e.preventDefault();
}
});
:
textarea { width:200px;
resize:none;
overflow:hidden;
font-size:18px;
height:1.1em;
padding:2px;
}
回答:
这个新的更新的演示已修复了一些错误,并且还支持Enter键,最大高度限制,宽度不需要首先固定设置(相反,我们可以设置其最小宽度)。功能更加强大。
以上是 根据输入到字段中的字符数动态扩展输入类型“文本”的高度 的全部内容, 来源链接: utcz.com/qa/410284.html