在输入的内容超过最大宽度

时间:2016-02-08 05:06:52

标签: javascript jquery css asp.net-mvc razor

如果键入的文本区域元素的最大宽度超过文本区域元素的最大宽度,如何水平增长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;
&#13;
&#13;

在呈现HTML之前

&#13;
&#13;
<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;
&#13;
&#13;

4 个答案:

答案 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();
});