jquery插件制作 自增长输入框实现代码


Posted in jQuery onAugust 17, 2012

首先还是看html代码:

<!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></title> 
<script type="text/javascript" src="Scripts/jquery-1.8.0.min.js"></script> 
<script type="text/javascript" src="Scripts/jquery.autogrow.js"></script> 
<script type="text/javascript"> 
$(document).ready(function () { 
$('#autogrow').autogrow(); 
}); 
</script> 
</head> 
<body> 
<form action="#" method="post"> 
<fieldset> 
<legend>auto growing textarea</legend> 
<textarea id="autogrow" cols="20" rows="4">this textarea will grow indefinitely.</textarea> 
</fieldset> 
</form> 
</body> 
</html>

接下来是js插件代码:

(function ($) { 
$.fn.autogrow = function (options) { 
var defaults = { 
minHeight: 0, 
maxHeight: 9999 
}; 
var options = $.extend(defaults, options); 
return this.each(function () { 
var element = $(this); 
//上一次文本框内容长度和宽度 
var lastValLength, lastWidth; 
//文本框内容长度、宽度和高度 
var valLength, width, height; 
//验证页面元素是textarea 
if (!element.is('textarea')) { 
return; 
} 
element.css('overflow', 'hidden')//设置超出范围的文字隐藏 
.keyup(function () {//设置键盘弹起事件 
//获取文本框内容长度 
valLength = $(this).val().length; 
//获取输入框的宽度 
//我这里使用的jquery版本是1.8,获取css属性的方法已经变成了prop 
//如果使用1.6以下版本的jquery,以下代码要变为 width = $(this).attr('offsetWidth'); 
//$(this).prop('scrollHeight')也要变为:$(this).attr('scrollHeight') 
width = $(this).prop('offsetWidth'); 
//有文字删除操作,或者文本框宽度变化的时候,先将文本框高度设置为0 
if (valLength < lastValLength || width != lastWidth) { 
$(this).height(0); 
} 
//计算适合的文本框高度 
height = Math.max(options.minHeight, Math.min($(this).prop('scrollHeight'), options.maxHeight)); 
//如果当前文本框的高度超过我们允许的最大高度的时候,隐藏多余文字;否则设置为auto 
//$(this).prop('scrollHeight') > height 只有在height取得的值是options.maxHeight才有意义 
$(this).css('overflow', ($(this).prop('scrollHeight') > height ? 'auto' : 'hidden')) 
.height(height); //设置文本框高度 
lastValLength = valLength; 
lastWidth = width; 
}); 
}); 
} 
})(jQuery);

例子比较简单,就是当你往文本框里输入信息的时候,文本框的高度会根据情况自动增长。

建议大家在看懂代码的基础上,还是自己动手写一遍代码,一来可以加深记忆,二来或许会遇到一些特殊情况,或许自己的demo运行不成功。通过努力,让自己的demo运行成功,你的js能力也就提升了。

jQuery 相关文章推荐
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
Apr 03 jQuery
jQuery判断邮箱格式对错实例代码讲解
Apr 12 jQuery
jQuery日期范围选择器附源码下载
May 23 jQuery
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
Jun 26 jQuery
jQuery动画_动力节点节点Java学院整理
Jul 04 jQuery
原生js jquery ajax请求以及jsonp的调用方法
Aug 04 jQuery
zTree jQuery 树插件的使用(实例讲解)
Sep 25 jQuery
jQuery实现所有验证通过方可提交的表单验证
Nov 21 jQuery
jQuery UI实现动画效果代码分享
Aug 19 jQuery
jQuery实现基本隐藏与显示效果的方法详解
Sep 05 jQuery
jQuery超简单遮罩层实现方法示例
Sep 06 jQuery
jQuery实现为动态添加的元素绑定事件实例分析
Sep 07 jQuery
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
Mar 21 #jQuery
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
Mar 21 #jQuery
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
Mar 21 #jQuery
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
Mar 21 #jQuery
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
Mar 21 #jQuery
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
Mar 22 #jQuery
jQuery轻松实现无缝轮播效果
Mar 22 #jQuery
You might like
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
2013/10/17 Javascript
Javascript字符串对象的常用方法简明版
2014/06/26 Javascript
js代码实现点击按钮出现60秒倒计时
2021/01/28 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
2016/06/08 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
Vue中自定义全局组件的实现方法
2017/12/08 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
Openlayers实现地图全屏显示
2020/09/28 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
[01:16:12]完美世界DOTA2联赛PWL S2 FTD vs Inki 第一场 11.21
2020/11/23 DOTA
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
Python numpy数组转置与轴变换
2019/11/15 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
2018/02/07 HTML / CSS
HTML5之语义标签介绍
2016/07/07 HTML / CSS
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
计算机科学与技术应届生求职信
2013/11/07 职场文书
生日寿星公答谢词
2015/09/29 职场文书
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers