jquery文本框textarea自适应高度

浏览器中默认的文本框是不能根据内容的增多变高,只能固定高度有滚动条,体验不是很好,找了很多方法兼容都不行,总算找到个兼容良好的方法:

<body>
        <textarea id="textarea3" style="overflow-y:hidden; height:20px;resize: none">

        </textarea>
        <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
        <script type="text/javascript">
            $(function() {
                //最小高度和最大高度默认
                $("#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>
时间: 2024-10-07 11:44:34

jquery文本框textarea自适应高度的相关文章

div模拟textarea自适应高度

之前在公司做项目的时候,有这么一个需求,要我写一个评论框,可以随着评论的行数增加而自动扩大,最开始我想用textarea实现,但是后来尝试后发现textarea并不适合,textarea的高度不会随着输入行数的增多而增大,于是我上网寻求了下帮助,发现大神张鑫旭的这篇文章<div模拟textarea文本域轻松实现高度自适应>,成功解决我的问题 代码如下: 1 1 <!DOCTYPE html> 2 2 <html lang="en"> 3 3 <

CodeMirror编辑器文本框Textarea代码高亮插件,CodeMirror的简单实用例子

CodeMirror是一个用于编辑器文本框textarea代码高亮javascript插件,为各种编程语言实现关键字,函数,变量等代码高亮显示,丰富的api和可扩展功能以及多个主题样式,能满足您各种项目的需求. 最近项目中要求把得到的后端json数据如下图展示给客户,还需要可编辑的功能,于是就用到了CodeMirror这款插件,经过初步的探索,发现它主题样式非常靓丽,简单美观,效果图如下: 下面我就一步一步说明我的使用过程. 1.首先需要下载codemirror插件,先创建文件夹,下载插件 np

jquery文本框的focus和blur事件

jquery文本框的focus和blur事件 focus事件在元素获取焦点时触发,如点击文本框时,触发该事件:而blur事件则在元素丢失焦点时触发,如点击除文本框的任何元素,都会触发该事件 代码如下 <body> <h3>表单中文本框的focus和blur事件</h3> <input id="txtest" type="text" value="" /> <div></div>

jQuery文本框中的事件应用

jQuery文本框中的事件应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jquer

禁止多行文本框textarea拖拽

禁止多行文本框textarea拖拽: textarea { resize: none; } resize这个是用于元素缩放,它可以取以下几个值: none 默认值 both 允许水平方向及垂直方向缩放 horizontal 只允许水平方向缩放 vertical 只允许垂直方向缩放

【CSS】隐藏多行文本框Textarea在IE中的垂直滚动条

在<[CSS]禁止Google浏览器允许定义调整多行文本框>(点击打开链接)中已经提及过如何使多行文本框Textarea在一些DOM2的浏览器中固定下来. 这不,多行文本框Textarea在IE中也存在一些样式上的缺陷了. 一个普通的,没有加任何定义的文本框,如下: <textarea cols="30" rows="3"></textarea> 其在IE的效果就如同左侧一样,在没有输入任何文字,就出现垂直滚动条很不雅观,尤其是在

jquery 文本框失去焦点显示提示信息&amp;&amp;单击置空文本框

/** * @param {Object} id 'cname' * @param {Object} pointout '请输入收藏夹名称' */function pointoutListener(id, pointout) { //为cname添加单击时间和失去焦点的监听器 var myinput = document.getElementById(id); addListener(myinput, "click", function(){ var value1 = $('#'+id

1分钟实现多行文本框[textarea]自动高度jquery 插件

<div class="form-group">     <label class="col-sm-3 control-label no-padding-right" for="form-field-5"> 内容</label>     <div class="col-sm-9">         <textarea class="col-sm-8" i

textarea自适应高度

最近做项目遇见了这个自适应高度的问题,也在网上找了些资料,大多选择用DIV模拟textarea,但是这样就有安全性的问题,因为你是可以直接将HTML代码输入进去的. 接下来介绍的这种办法是采用两个textarea,其中一个textarea设置其absolute,设置其不可见.当输入文本的textarea的值变化时,将原本的textarea中的值copy到新的 textarea中,这样可以准确计算高度(注意在copy节点的时候新旧textarea的宽度是一样的). 为什么不直接用原textarea