jquery控制textarea随文字自动增高

本文介绍了一个jQuery插件,用于实现文本框内容变化时自动调整高度的功能,支持设置最大最小高度,并确保滚动条仅在必要时出现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

$.fn.autoTextarea = function (options) {
            var defaults = {
                maxHeight: null,//文本框是否自动撑高,默认:null,不自动撑高;如果自动撑高必须输入数值,该值作为文本框自动撑高的最大高度
                minHeight: $(this).height() //默认最小高度,也就是文本框最初的高度,当内容高度小于这个高度的时候,文本以这个高度显示
            };
            var opts = $.extend({}, defaults, options);
            return $(this).each(function () {
                $(this).bind("paste cut keydown keyup focus blur", function () {
                    var height, style = this.style;
                    this.style.height = opts.minHeight + 'px';
                    if (this.scrollHeight > opts.minHeight) {
                        if (opts.maxHeight && this.scrollHeight > opts.maxHeight) {
                            height = opts.maxHeight;
                            style.overflowY = 'scroll';
                        } else {
                            height = this.scrollHeight;
                            style.overflowY = 'hidden';
                        }
                        style.height = height + 'px';
                    }
                });
            });
        };

 

$.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 (!window.attachEvent) {
                        $(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();
            }
        });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值