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插件FusionCharts绘制2D环饼图效果示例【附demo源码】
Apr 10 jQuery
简单实现jQuery弹幕效果
May 06 jQuery
基于jQuery封装的分页组件
Jun 26 jQuery
jQuery实现动态给table赋值的方法示例
Jul 04 jQuery
jQuery 实现鼠标画框并对框内数据选中的实例代码
Aug 29 jQuery
JS+jQuery实现注册信息的验证功能
Sep 26 jQuery
jquery实现图片跟随鼠标的实例
Oct 17 jQuery
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
Dec 18 jQuery
jquery radio 动态控制选中失效问题的解决方法
Feb 28 jQuery
jQuery实现上下滚动公告栏详细代码
Nov 21 jQuery
jQuery点击页面其他部分隐藏下拉菜单功能
Nov 27 jQuery
jquery实现直播弹幕效果
Nov 28 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的中问验证码
2006/11/25 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
vue prop属性传值与传引用示例
2019/11/13 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
js实现头像上传并且可预览提交
2020/12/25 Javascript
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
python入门教程之识别验证码
2017/03/04 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
opencv python如何实现图像二值化
2020/02/03 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
为什么需要版本控制?
2013/08/08 面试题
函授本科个人自我鉴定
2014/03/25 职场文书
工伤赔偿协议书范本
2014/04/15 职场文书
班主任工作经验交流材料
2014/05/13 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
老乡聚会通知
2015/04/23 职场文书
预备党员群众意见
2015/06/01 职场文书
师范生见习自我总结
2015/06/23 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书
运动会广播稿50字
2015/08/19 职场文书
幼儿园2016年圣诞活动总结
2016/03/31 职场文书
详解Node.js如何处理ES6模块
2021/05/15 Javascript