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插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
Mar 21 jQuery
JS与jQuery实现子窗口获取父窗口元素值的方法
Apr 17 jQuery
jQuery复合事件结合toggle()方法的用法示例
Jun 10 jQuery
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
Jun 12 jQuery
jQuery实现全选、反选和不选功能
Aug 16 jQuery
jQuery条件分页 代替离线查询(附代码)
Aug 17 jQuery
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
Dec 24 jQuery
基于jquery.page.js实现分页效果
Jan 01 jQuery
基于jquery实现左右上下移动效果
May 02 jQuery
jQuery对底部导航进行跳转并高亮显示的实例代码
Apr 23 jQuery
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
Apr 04 jQuery
详解jQuery的核心函数和事件处理
Feb 18 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实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
2018/08/30 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
解决Jquery鼠标经过不停滑动的问题
2014/03/03 Javascript
让人蛋疼的JavaScript语法特性
2014/09/30 Javascript
js的window.showModalDialog及window.open用法实例分析
2015/01/29 Javascript
DOM 事件的深入浅出(二)
2016/12/05 Javascript
vue-cli webpack 开发环境跨域详解
2017/05/18 Javascript
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
2018/08/31 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
微信小程序商品详情页底部弹出框
2019/11/22 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
Python获取linux主机ip的简单实现方法
2016/04/18 Python
使用apidocJs快速生成在线文档的实例讲解
2018/02/07 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
python删除字符串中指定字符的方法
2018/08/13 Python
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
如何用Python来理一理红楼梦里的那些关系
2019/08/14 Python
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
马来西亚网上购物:Youbeli
2018/03/30 全球购物
经济信息系毕业生自荐信范文
2014/03/15 职场文书
安全月活动总结
2014/05/05 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
新闻稿格式范文
2015/07/18 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
Python离线安装openpyxl模块的步骤
2021/03/30 Python
React Native项目框架搭建的一些心得体会
2021/05/28 Javascript