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操作DOM_动力节点Java学院整理
Jul 04 jQuery
使用jQuery实现鼠标点击左右按钮滑动切换
Aug 04 jQuery
使用jQuery实现页面定时弹出广告效果
Aug 24 jQuery
jQuery实现的简单动态添加、删除表格功能示例
Sep 21 jQuery
jQuery中 DOM节点操作方法大全
Oct 12 jQuery
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
Nov 10 jQuery
jQuery仿移动端支付宝键盘的实现代码
Aug 15 jQuery
jQuery使用each遍历循环的方法
Sep 19 jQuery
Jquery和CSS实现选择框重置按钮功能
Nov 08 jQuery
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
Dec 05 jQuery
jquery将json转为数据字典的实例代码
Oct 11 jQuery
jQuery操作事件完整实例分析
Jan 10 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
php变量范围介绍
2012/10/15 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
优化javascript的执行速度
2010/01/23 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
Bootstrap每天必学之标签页(Tab)插件
2020/08/09 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
Jquery 整理元素选取、常用方法一览表
2016/11/26 Javascript
微信小程序开发探究
2016/12/27 Javascript
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python编写暴力破解FTP密码小工具
2014/11/19 Python
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
python数据结构之图深度优先和广度优先实例详解
2015/07/08 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
TensorFlow损失函数专题详解
2018/04/26 Python
python网络应用开发知识点浅析
2019/05/28 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
python随机模块random使用方法详解
2020/02/14 Python
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
入党申请书自我鉴定
2013/10/12 职场文书
家长会演讲稿范文
2014/01/10 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
陕西导游词
2015/02/04 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
详解盒子端CSS动画性能提升
2021/05/24 HTML / CSS