zoukankan      html  css  js  c++  java
  • jQuery plugin: autoResize

    html代码定义文本框:

    <textarea id="test-comment" style=" 400px; padding: 5px; height: 50px; display: block;">
            在这里输入内容,当内容超出文本框高度时,文本框会自动扩展
    </textarea>

    javascript代码:

    <SCRIPT type=text/javascript>
    $('textarea#resize').autoResize({
         // 文本框改变大小时触发事件,这里改变了文本框透明度
        onResize : function() {
            $(this).css({opacity:0.8});
        },
        // 动画效果回调触发事件,这里改变了文本框透明度
        animateCallback : function() {
            $(this).css({opacity:1});
        },
        // 动画效果持续时间(ms),默认150
        animateDuration : 300,
         // 每次改变大小时,扩展(缩小)的高度(像素),默认20
        extraSpace : 40,
      //当文本框高度大于多少时,不再扩展,出现滚动条,默认1000
    	limit: 200
    });
    </script>

    或者最简单:

    <SCRIPT type=text/javascript>
    $('textarea#resize').autoResize();
    </script>

    例子:

    <!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>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <SCRIPT type=text/javascript src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></SCRIPT>
    <SCRIPT type=text/javascript src="autoresize.jquery.js"></SCRIPT>
    <style type="text/css">
    .autotextarea{
    	OVERFLOW-Y: hidden;
    	WIDTH: 500px;
    	DISPLAY: block;
    	FONT-FAMILY: Sans-serif;
    	HEIGHT: 100px;
    	FONT-SIZE: 1.2em;
    	OVERFLOW: hidden;
    	
    	padding: 10px;
    }
    </style>
    
    </head>
    
    <body>
    <textarea  id="resize" class="autotextarea"  >
    Type something in here, when you get close to the end the box will e
    </textarea>
    
    
    <SCRIPT type=text/javascript>
    $('textarea#resize').autoResize({
        // On resize:
        onResize : function() {
            $(this).css({opacity:0.8});
        },
        // After resize:
        animateCallback : function() {
            $(this).css({opacity:1});
        },
        // Quite slow animation:
        animateDuration : 300,
        // More extra space:
        extraSpace : 40
    });
    </script>
    </body>
    </html>
    

    引用js:

    /*
     * jQuery autoResize (textarea auto-resizer)
     * @copyright James Padolsey http://james.padolsey.com
     * @version 1.04
     */
    
    (function ($) {
    
      $.fn.autoResize = function (options) {
    
        // Just some abstracted details,
        // to make plugin users happy:
        var settings = $.extend({
          onResize: function () {},
          animate: true,
          animateDuration: 150,
          animateCallback: function () {},
          extraSpace: 20,
          limit: 1000
        },
        options);
    
        // Only textarea's auto-resize:
        this.filter('textarea').each(function () {
    
          // Get rid of scrollbars and disable WebKit resizing:
          var textarea = $(this).css({
            resize: 'none',
            'overflow-y': 'hidden'
          }),
    
          // Cache original height, for use later:
          origHeight = textarea.height(),
    
          // Need clone of textarea, hidden off screen:
          clone = (function () {
    
            // Properties which may effect space taken up by chracters:
            var props = ['height', 'width', 'lineHeight', 'textDecoration', 'letterSpacing'],
              propOb = {};
    
            // Create object of styles to apply:
            $.each(props, function (i, prop) {
              propOb[prop] = textarea.css(prop);
            });
    
            // Clone the actual textarea removing unique properties
            // and insert before original textarea:
            return textarea.clone().removeAttr('id').removeAttr('name').css({
              position: 'absolute',
              top: 0,
              left: -9999
            }).css(propOb).attr('tabIndex', '-1').insertBefore(textarea);
    
          })(),
            lastScrollTop = null,
            updateSize = function () {
    
            // Prepare the clone:
            clone.height(0).val($(this).val()).scrollTop(10000);
    
            // Find the height of text:
            var scrollTop = Math.max(clone.scrollTop(), origHeight) + settings.extraSpace,
              toChange = $(this).add(clone);
    
            // Don't do anything if scrollTip hasen't changed:
            if (lastScrollTop === scrollTop) {
              return;
            }
            lastScrollTop = scrollTop;
    
            // Check for limit:
            if (scrollTop >= settings.limit) {
              $(this).css('overflow-y', '');
              return;
            }
            // Fire off callback:
            settings.onResize.call(this);
    
            // Either animate or directly apply height:
            settings.animate && textarea.css('display') === 'block' ? toChange.stop().animate({
              height: scrollTop
            },
            settings.animateDuration, settings.animateCallback) : toChange.height(scrollTop);
          };
    
          // Bind namespaced handlers to appropriate events:
          textarea.unbind('.dynSiz').bind('keyup.dynSiz', updateSize).bind('keydown.dynSiz', updateSize).bind('change.dynSiz', updateSize);
    
        });
    
        // Chain:
        return this;
    
      };
    
    })(jQuery);

    官方:http://james.padolsey.com/javascript/jquery-plugin-autoresize/

  • 相关阅读:
    Apache 配置多站点访问「为项目分配二级域名」
    php封装的mysqli类完整实例
    PHP实现链式操作的三种方法详解
    php实现简单链式操作mysql数据库类
    PHP PDO_MYSQL 链式操作 非链式操作类
    23个数据库常用查询语句
    微信小程序表单弹窗实例
    ES6 && ECMAScript2015 新特性
    ES6新语法概览
    sql将两个日期之间的日子全列出来
  • 原文地址:https://www.cnblogs.com/zengxiangzhan/p/1601324.html
Copyright © 2011-2022 走看看