jquery實現(xiàn)文本框textarea自適應(yīng)高度

字號:


    瀏覽器中默認(rèn)的文本框是不能根據(jù)內(nèi)容的增多變高,只能固定高度有滾動條,體驗不是很好,找了很多方法兼容都不行,總算找到個兼容良好的方法:
    <body>
        <textarea id="textarea3">
        </textarea>
        <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
        <script type="text/javascript">
          $(function() {
            //最小高度和最大高度默認(rèn)
            $("#textarea1").textareaAutoHeight();
            //最大高度為100px
            $("#textarea2").textareaAutoHeight({maxHeight: 100});
            //最小高度為50px,最大高度為200px
            $("#textarea3").textareaAutoHeight({minHeight: 50, maxHeight: 200});
          })
          $.fn.extend({
            textareaAutoHeight: function(options) {
              this._options = {
                minHeight: 0,
                maxHeight: 1000
              }
              this.init = function() {
                for (var p in options) {
                  this._options[p] = options[p];
                }
                if (this._options.minHeight == 0) {
                  this._options.minHeight = parseFloat($(this).height());
                }
                for (var p in this._options) {
                  if ($(this).attr(p) == null) {
                    $(this).attr(p, this._options[p]);
                  }
                }
                $(this).keyup(this.resetHeight).change(this.resetHeight)
                    .focus(this.resetHeight);
              }
              this.resetHeight = function() {
                var _minHeight = parseFloat($(this).attr("minHeight"));
                var _maxHeight = parseFloat($(this).attr("maxHeight"));
                if (!$.browser.msie) {
                  $(this).height(0);
                }
                var h = parseFloat(this.scrollHeight);
                h = h < _minHeight ? _minHeight :h > _maxHeight ? _maxHeight : h;
                $(this).height(h).scrollTop(h);
                if (h >= _maxHeight) {
                  $(this).css("overflow-y", "scroll");
                }
                else {
                  $(this).css("overflow-y", "hidden");
                }
              }
              this.init();
            }
          });
        </script>
      </body>
    以上就是本文的全部內(nèi)容,希望對大家學(xué)習(xí)jquery程序設(shè)計有所幫助。