如果键入的文本区域元素的最大宽度超过文本区域元素的最大宽度,如何水平增长textarea?另外,我不想看到水平滚动条。
渲染html
<textarea name="CatchPhrase" class="input-validation-error" id="CatchPhrase" aria-invalid="true" aria-required="true" aria-describedby="CatchPhrase-error" rows="2" cols="20" data-val-required="The Catch Phrase field is required." data-val="true" data-val-maxlength-max="50"
data-val-maxlength="The field Catch Phrase must be a string or array type with a maximum length of '50'." htmlattributes="{ id = profileCatchPhrase, class = form-control }">I like yoga sd;lasdlk asdks';aksd'asd 'asd';las ';asd'lasd';las'dl as'dla'sdl'asld as'd;las'dl; a;sdlka;sdklasd ;alsd;lkasda ;alskd;lkasd ;lkasd;lk</textarea>
&#13;
在呈现HTML之前
<div class="form-group">
@Html.LabelFor(model => model.CatchPhrase, htmlAttributes: new { @class = "control-label col-lg-2 col-md-2 col-sm-2 col-xs-2" })
<div class="col-lg-10 col-md-10 col-sm-10 col-xs-10">
@Html.TextAreaFor(model => model.CatchPhrase, new { htmlAttributes = new { id = "profileCatchPhrase", @class = "form-control" } }) @Html.ValidationMessageFor(model => model.CatchPhrase, "", new { @class = "text-danger" })
</div>
</div>
&#13;
答案 0 :(得分:1)
尝试这样的事情:
$('#CatchPhrase').on('input', function() {
$(this).outerHeight(38).outerHeight(this.scrollHeight);
});
请参阅:https://stackoverflow.com/a/34513436/4613398
的jsfiddle:https://jsfiddle.net/3qmztmjj/
答案 1 :(得分:1)
如果我理解你的问题&amp;如果要增加文本区域的水平宽度,可以使用maxlength&amp ;;检查文本字符。使用步骤来增加宽度。希望这段代码能为您提供全程帮助。
$("#profileCatchPhrase").keypress(function() {
if ($(this).val().length > $(this).attr("data-val-maxlength-max")) {
var width = parseInt($(this).css("width").split("p")[0]) + 10;
$(this).css("width", width + "px");
$(this).attr("data-val-maxlength-max", parseInt($(this).attr("data-val-maxlength-max")) + 5);
}
});
在这里我使用10px作为icreament步骤,你可以相应地调整它。
答案 2 :(得分:1)
好吧,我想你想要横向扩展textarea而不是垂直扩展然后你可以尝试这样的事情:
<textarea type="text" value="" placeholder="Autosize"></textarea>
并编写一个可以横向扩展的简单javascript函数:
$('textarea').keyup(function () {
// I'm assuming that 1 letter will expand the input by 10 pixels
var oneLetterWidth = 10;
// I'm also assuming that input will resize when at least eleven characters
// are typed
var minCharacters = 11;
var len = $(this).val().length;
if (len > minCharacters) {
// increase width
$(this).width(len * oneLetterWidth);
} else {
// restore minimal width;
$(this).width(150);
}
});
这将完美地工作。你也可以设置textarea max-width,因为它应该在一段时间后停止扩展所以只需在你的html的head部分包含这个css:
textarea {
max-width: 400px;
}
答案 3 :(得分:-1)
使用jquery和textarea的id,如下所示
$(function() {
$('#CatchPhrase').autogrow();
});