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 EasyUI 组件加上“清除”功能实例详解
Apr 11 jQuery
jQuery遍历节点方法汇总(推荐)
May 13 jQuery
jquery实现图片跟随鼠标的实例
Oct 17 jQuery
使用JQuery实现图片轮播效果的实例(推荐)
Oct 24 jQuery
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
Dec 05 jQuery
jquery点击回车键实现登录效果并默认焦点的方法
Mar 09 jQuery
jquery 实现拖动文件上传加载进度条功能
Mar 18 jQuery
jQuery实现菜单的显示和隐藏功能示例
Jul 24 jQuery
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
Feb 14 jQuery
Jquery滑动门/tab切换实现方法完整示例
Jun 05 jQuery
基于ajax及jQuery实现局部刷新过程解析
Sep 12 jQuery
jQuery 实现DOM元素拖拽交换位置的实例代码
Jul 14 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
织梦模板标记简介
2007/03/11 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
PHP反转字符串函数strrev()函数的用法
2012/02/04 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
JavaScript高级程序设计
2006/12/29 Javascript
JavaScript 使用技巧精萃(.net html
2009/04/25 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
jQuery拖拽div实现思路
2014/02/19 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
鼠标悬停小图标显示大图标
2016/01/22 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
vue-router重写push方法,解决相同路径跳转报错问题
2020/08/07 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
Python3实现生成随机密码的方法
2014/08/23 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
详解Python中的四种队列
2018/05/21 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
信息管理专业学生自荐信格式
2013/09/22 职场文书
副总经理岗位职责
2014/03/16 职场文书
网页美工求职信范文
2014/04/17 职场文书
基层党建工作宣传标语
2014/06/24 职场文书
迎国庆横幅标语
2014/10/08 职场文书
毕业生见习报告总结
2014/11/08 职场文书
分享几种python 变量合并方法
2022/03/20 Python
SpringBoot Http远程调用的方法
2022/08/14 Java/Android