`

TextArea高度自适应

    博客分类:
  • JS
阅读更多

TextArea的高度自适应本来应该很简单的,只需要用js监听它的输入然后修改其高度即可,甚至对于ie只要用css(overflow:visible;)控制就可以了。但是同样会有兼容性问题,对于Google Chrome等浏览器不支持。所以就想用JavaScript来实现,于是就写了一个jQuery插件来实现。代码如下:

/// <reference path="jquery-1.5.1.min.js" />
$.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 (>= _maxHeight) {
                $(this).css("overflow-y", "scroll");
            }
            else {
                $(this).css("overflow-y", "hidden");
            }
        }
        this.init();
    }
});

需要引用jQuery文件,使用方法很简单,比如:

<textarea id="textarea1"></textarea>
<textarea id="textarea2"></textarea>
<textarea id="textarea3"></textarea>
<script>
  //最小高度和最大高度默认
  $("#textarea1").textareaAutoHeight();
  //最大高度为100px
  $("#textarea2").textareaAutoHeight({ maxHeight:100 });
  //最小高度为50px,最大高度为200px
  $("#textarea3").textareaAutoHeight({ minHeight:50, maxHeight:200 });
</script>

 

这里有个特别奇怪的现象,就是在非ie下如果不先将textarea的高度改为0,获取到的scrollHeight就是不正常的,貌似每取一次scrollHeight的值,其scrollHeight值就会修正一点,所以网上有些方法就是用一个计时器来一直去调用,不过这样效率很低。

 

转自:http://binbinliao.com/programming/textarea-auto-height.html

分享到:
评论

相关推荐

    jquery----TextArea高度自适应

    在探讨“jQuery——TextArea高度自适应”的主题时,我们深入解析了如何利用jQuery库实现文本区域(TextArea)的高度自动调整,以确保其高度能够根据输入的文本量动态变化,从而提供更好的用户体验。以下是对该主题的...

    flex3 textArea 高度自适应

    在标题“flex3 textArea 高度自适应”中提到的问题,就是如何实现这样一个功能,让`TextArea`的大小随着其内容的增加而自动调整。 在描述中提到,已经有一个自定义的解决方案,可以依据文本内容自动调整`TextArea`...

    textarea高度自适应js代码

    5. **调整textarea高度**:将textarea的高度设置为测量得到的高度,确保内容始终可见,同时可能需要加上一些额外的padding或border值以保持样式一致。 6. **防止无限循环**:为了防止因高度调整触发新的输入事件,...

    textarea 输入框自适应高度

    "textarea 输入框自适应高度"这个主题就是关于如何实现这样一个功能的探讨。 在HTML中,textarea元素默认是不会自动扩展的,当用户输入的文字超过了一定行数,就会出现滚动条。然而,通过一些JavaScript库或自定义...

    Vue下textarea文本框根据内容自适应改变高度

    总的来说,创建Vue自定义组件`AutoHeightTextarea`可以方便地实现textarea根据内容自适应高度的效果,同时通过针对性的兼容性处理,可以确保在各种浏览器环境中都有良好的表现。在实际项目中,这样的组件可以大大...

    css textarea 高度自适应,无滚动条

    用css控制textarea文本域的高度随内容的变化而变化,不出现滚动条....首先,原则上实现textarea自适应必须适用css,不能直接适用“width=100%”这样的写法,具体示例: 复制代码代码如下: &lt;style&gt; textarea {

    textarea自适应高度标签,去除难看的滚动条

    针对这些问题,我们可以采用特定的技术来实现 `textarea` 的高度自适应和去除滚动条。 首先,`textarea` 的高度自适应通常通过JavaScript库,如jQuery,来实现。jQuery 是一个强大的JavaScript库,它简化了DOM操作...

    微信小程序 内容自适应textarea表单组件(autoheight_textarea)

    textarea根据内容自适应高度 组件 注意:要监听input事件改变value值 使用: &lt;autoheight_textarea value="{{value}}" placeholder="写个评论" bindinput="listenerinput"&gt;&lt;/autoheight_textarea&gt;

    jquery实现textarea 高度自适应

    之前给大家分享过用Javascript控制文本框textarea高度随内容自适应增长收缩,今天花了点时间换了种实现方法,总结一下 代码如下: jQuery.fn.extend({  autoHeight: function(){  return this.each(function(){  ...

    HTML5 textarea高度自适应的两种方案

    随着输入值自动伸缩高度 可复制添加信息 可粘贴文本 可粘贴图片 以下实例代码执行环境为Chrome80 方案一 HTML5 Textarea 元素 1. 自动获得焦点 点击编辑自动获得焦点后光标跳转到了最前面,why? 查文档 MDN,...

    div模拟textarea,解决高度自适应

    解决textarea文字太多无法高度自适应问题,使用div模拟textarea

    auto-textarea:基于Vue的高度自适应文本输入框

    基于Vue的高度自适应文本输入框 Use Setup (开始) Install auto-textarea (安装) $ npm install auto-textarea --save package.json "auto-textarea": "^1.3.6" Use (如何引入) // 方法一 // import with ES6 ...

    Javascript 文本框textarea高度随内容自适应增长收缩

    枫芸志 » 文本框textarea高度自适应增长/伸缩 textarea { height:100px; width: 300px; } 晴枫制作 http://jb51.net [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 方案一在各浏览器中,文本框随内容自适应...

    textarea文本域宽度和高度width及height自动适应实现代码

    本文将详细介绍如何通过JavaScript和CSS来实现`textarea`文本域的宽度和高度自适应。 首先,对于宽度的自动适应,通常我们希望`textarea`能填满其父容器的宽度。在HTML中,我们可以给`textarea`添加一个CSS类,如`...

    解决Layui 表格自适应高度的问题

    在创建响应式布局时,确保表格能够自适应屏幕大小和内容高度是至关重要的,因为这能提供良好的用户体验。然而,在实际操作中,可能会遇到Layui表格无法自动调整高度的问题,导致内容被遮挡或者布局不协调。本文将...

    Textarea根据内容自适应高度

    这个功能可以通过JavaScript来实现,正如标题“Textarea根据内容自适应高度”所描述的那样。本文将详细介绍如何使用JavaScript来控制`Textarea`的内容自适应高度,并提供相关代码示例。 首先,我们来看一下提供的...

    定宽的textarea根据内容自动调整高度

    在压缩包中的`定宽textarea自适应高度.html`文件,很可能是包含了一个演示这个功能的网页。打开这个文件,你可以看到一个实际运行的例子,其中可能包含了上述的JavaScript代码和相关CSS样式,以实现定宽`textarea`...

Global site tag (gtag.js) - Google Analytics