`
javaEEdevelop
  • 浏览: 876449 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

jquery textarea 自动调整高度之autoResize插件

 
阅读更多

autoResize.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','hidden');
                        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);

 使用

$(function(){
		
			
		$('textarea').autoResize({
			// On resize:
			onResize : function() {
				$(this).css({opacity:0.8});
			},
			// After resize:
			animateCallback : function() {
				$(this).css({opacity:1});
			},
			// Quite slow animation:
			animateDuration : 100,
			// More extra space:
			extraSpace : 0
		});
})
 
分享到:
评论

相关推荐

    基于jQuery的“autoresize”插件自动改变textarea大小

    "autoresize"插件是jQuery的一个扩展,它能实时监控textarea中的文本变化,并根据内容自动调整textarea的高度,使得文本始终保持在最后一行,无需用户滚动查看。 要使用"autoresize"插件,首先确保引入了jQuery库。...

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

    为了解决这个问题,我们可以实现一个定宽的`textarea`,使其能够根据内容自动调整高度。这种功能在各种在线编辑器、评论区或表单填写场景中都非常实用。 在HTML中,`textarea`元素具有`rows`和`cols`属性,分别用于...

    jquery----TextArea高度自适应

    为了解决这个问题,我们可以使用jQuery来创建一个插件,该插件能够在用户输入或修改文本时,自动调整TextArea的高度,以适应当前文本量。这种技术被称为“高度自适应”。 ### 二、代码解析 #### 1. 初始化设置 在...

    无滚动条Textarea自动适用高度.html

    无滚动条Textarea自动适用高度.html Textarea

    jQuery-textarea-autosizer:根据输入自动调整 textarea 高度

    根据输入自动调整 textarea 高度 ##在线演示 ##用法 // Enable: $ ( < textarea selector > ).autosize(); // Disable: $( < textarea selector > ).autosize(false); // Handle autosize ...

    jQuery Textarea全屏插件Textarea Fullscreen

    值得注意的是,虽然jQuery Textarea Fullscreen插件提供了基本的全屏功能,但可能还需要与其他jQuery插件或自定义脚本结合使用,以实现更丰富的功能,如文本格式化、自动保存、代码高亮等。同时,为了确保无障碍性,...

    textarea自动高度调整

    根据文字的多少自动增高 能够自动伸缩 也可以 ←Backspace 减少字体的同时高度跟着减

    jquery高亮插件(支持textarea内容高亮)

    本文将详细介绍一个支持textarea内容高亮的jQuery插件,及其应用方法和相关知识点。 ### 插件简介 "jquery.highlight"是一个专门用于实现文本高亮的jQuery插件。它能够轻松地对HTML元素内的文本进行匹配和高亮,...

    可为textarea添加行号的jquery插件

    本文将详细介绍一款基于jQuery的插件,该插件专门用于为textarea添加行号,使得用户在编辑长文本时能够更加便捷地追踪和定位每一行。 首先,让我们了解这个插件的基本原理。在HTML中,textarea元素常用于收集用户...

    自适应拉伸高度Textarea 插件

    jQuery TextArea Auto-Height plugin jquery插件

    textarea 输入框自适应高度

    在许多场景下,我们希望textarea能根据用户输入的内容自动调整其高度,以提供更好的用户体验。"textarea 输入框自适应高度"这个主题就是关于如何实现这样一个功能的探讨。 在HTML中,textarea元素默认是不会自动...

    jQuery 文本框字符限制插件 Textarea

    本文将重点介绍标题为“jQuery 文本框字符限制插件 Textarea”的相关知识点,该插件主要用于限制用户在textarea文本框中输入的字符数。 在网页设计中,有时我们需要对用户的输入进行控制,例如限制评论长度、留言...

    jQuery获取设置textarea中光标位置

    jQuery扩展函数,用于获取设置textarea中光标位置

    jQuery textarea文本框输入文字字数限制提示代码

    本示例中,我们将探讨如何使用jQuery实现textarea文本框的字数限制功能,并实时提示用户输入的字符数量。 首先,让我们了解jQuery的基本概念。jQuery通过一个"$"符号作为入口,提供了一种简洁的方式来选择DOM元素、...

    基于jquery的让textarea自适应高度的插件

    针对textarea元素,有时候我们希望它能根据用户输入的内容自动调整高度,以避免滚动条的出现,提供更友好的用户体验。这就是"基于jQuery的让textarea自适应高度的插件"所解决的问题。 这个插件的核心功能在于,当...

    jquery textarea插入gif动态QQ表情图片表单提交

    以上就是使用jQuery在textarea中插入和提交gif动态QQ表情的基本流程。实际应用中可能需要处理更多细节,如表情的缓存、错误处理和用户界面优化等。对于压缩包中的`texiao7081_1560680890`文件,可能是包含了实现此...

    autoHeightTextarea自适应高度的textarea是一款jquery插件

    然而,原始的`textarea`元素并不具备自动调整高度的功能,当用户输入多行文字时,可能会超出可视区域,导致用户体验下降。为解决这一问题,`autoHeightTextarea`应运而生,它是一款基于jQuery的插件,旨在让`...

    jquery对textarea的长度进行验证

    当用户尝试提交表单时,`jquery.validate.js`会自动检查所有字段,如果textarea的长度超过200个字符,就会阻止表单提交并显示错误信息。 通过这种方式,我们可以灵活地控制用户在textarea中输入的文本长度,提高...

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

    在Vue.js框架中,开发网页应用时,我们经常会遇到需要创建一个可以自动调整高度的textarea元素,以适应用户输入的大量文本。这个功能对于避免显示滚动条和保持页面整洁至关重要。下面将详细介绍如何使用Vue自定义...

Global site tag (gtag.js) - Google Analytics