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实现拼图小游戏(实例讲解)
Jul 24 jQuery
jQuery EasyUI开发技巧总结
Sep 26 jQuery
基于jQuery中ajax的相关方法汇总(必看篇)
Nov 08 jQuery
CSS3结合jQuery实现动画效果及回调函数的实例
Dec 27 jQuery
bootstrap+jquery项目引入文件报错的解决方法
Jan 22 jQuery
浅谈ajax在jquery中的请求和servlet中的响应
Jan 22 jQuery
Angular5中调用第三方库及jQuery的添加的方法
Jun 07 jQuery
jQuery+css last-child实现选择最后一个子元素操作示例
Dec 10 jQuery
Jquery属性的获取/设置及样式添加/删除操作技巧分析
Dec 23 jQuery
基于jQuery实现挂号平台首页源码
Jan 06 jQuery
jquery检测上传文件大小示例
Apr 26 jQuery
jQuery中event.target和this的区别详解
Aug 13 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扩展图文教程
2008/12/12 PHP
php 生成WML页面方法详解
2009/08/09 PHP
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
PHP获取POST数据的几种方法汇总
2015/03/03 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
2017/04/15 PHP
php post json参数的传递和接收处理方法
2018/05/31 PHP
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
bootstrap模态框消失问题的解决方法
2016/12/02 Javascript
jQuery Easyui 下拉树组件combotree
2016/12/16 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
2018/09/28 Javascript
layui按条件隐藏表格列的实例
2019/09/19 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
详解 Python 读写XML文件的实例
2017/08/02 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
Python2与Python3的区别实例分析
2019/04/11 Python
int在python中的含义以及用法
2019/06/27 Python
python实现飞机大战小游戏
2019/11/08 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
python实现串口通信的示例代码
2020/02/10 Python
TensorFlow实现checkpoint文件转换为pb文件
2020/02/10 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
《第一次抱母亲》教学反思
2014/04/16 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
高中学校对照检查材料
2014/08/31 职场文书
农业生产宣传标语
2014/10/08 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
导游带团欢迎词
2015/09/30 职场文书
课改心得体会范文
2016/01/25 职场文书
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js