inputclean插件的使用方法
inputclean插件的使用方法
语言:javascript
是jquery插件,
目的:给文本框添加×,点击×,就可以清空文本框内容.
如图:
详细交互效果:
1,当文本框聚焦时,×永久显示,无论鼠标光标在不在文本框上面(hover);
2,当文本框失去焦点时,仅仅有鼠标hover,×才会显示,鼠标移开,×消失;
3,点击×,文本框内容被清空,且文本框自己主动聚焦.
整个插件不到75行,所以就直接贴代码了:
文件名称:jquery.inputclean.js
/**
* Created by huangweii on 2015/7/27.
* 用于添加文本框的×,点击×会清空文本框的内容
*/
$.fn.inputclean = function (option, callback) {
var settings = $.extend({
inputClearClass: undefined,
deviationTop: undefined/*垂直方向上的误差*/,
deviationLeft: undefined/*水平方向上的误差*/,
clickCallback: undefined/*清空文本框之后的回调事件*/,
noFocusAfterClean: undefined/* 清空文本框内容后是否聚焦 */,
parentHoverClass: 'inputParentLi'/*文本框的父元素的class,用于hover时显示×*/
}, option);
function bootstrap($that) {
var defInputClearClass = 'inputClearBtn';//正常情况下,字体的颜色
if (settings.inputClearClass) {
defInputClearClass = settings.inputClearClass;
}
var cleanBtnTop = 11;
if (settings.deviationTop) {
cleanBtnTop = cleanBtnTop + Number(settings.deviationTop);
}
var cleanBtn = '<i class="' + defInputClearClass + '"></i>';
var $cleanBtn = $(cleanBtn);
$that.before($cleanBtn);
$that.data('inputclean', true);//用于推断 是否有× console.log($that.data('inputclean'))
/* 为什么要推断是否有×呢?
假设有×,则有内容时显示,无内容时不显示:
if($orgFullName.data('inputclean')){
if($orgFullName.val()){
$orgFullName.prev().show();
}else{
$orgFullName.prev().hide();
}
}
* */
if (settings.parentHoverClass) {//添加父元素的样式,用于父元素hover时,显示×
$parentLi = $that.parent();
if (!$parentLi.hasClass(settings.parentHoverClass)) {
$parentLi.addClass(settings.parentHoverClass);
}
}
var width_input = $that.width();
if (settings.deviationLeft) {
width_input = width_input + settings.deviationLeft;
}
console.log('width_input:' + width_input);
$cleanBtn.css('left', (width_input + 12) + 'px');
$cleanBtn.css('top', (cleanBtnTop) + 'px');
$that.css('padding-right', '20px');
$cleanBtn.click(function (e) {
$that.val('');
//$cleanBtn.hide();//隐藏×
if (settings.noFocusAfterClean === undefined || settings.noFocusAfterClean === false) {
console.log(settings.noFocusAfterClean);
$that.focus();
}
if (settings.clickCallback && typeof settings.clickCallback === 'function') {
settings.clickCallback(e);
}
})
}
return this.each(function () {
var $elem = $(this);
bootstrap($elem);
if ($.isFunction(callback)) callback($elem)
})
};
參数说明
| 參数名 | 含义 | 说明 |
|---|---|---|
| inputClearClass | ×的样式 | 比如 ‘inputClearBtn’ |
| deviationTop | 垂直方向上的误差 | 默认值为undefined,可能须要设置,特别是在父标签高度不统一时 |
| deviationLeft | 水平方向上的误差 | 默认值为undefined,一般不用设置 |
| clickCallback | 清空文本框之后的回调事件 | 比方清空文本框之后,提交button应该置灰 |
| noFocusAfterClean | 清空文本框内容后是否聚焦 | 默认值为undefined,表示聚焦 |
| parentHoverClass | 文本框的父元素的class,用于hover时显示× | .inputParentLi:hover .inputClearBtn{display:block;} |
调用:
var $orgFullName = $('input[name=orgFullName]');
$orgFullName.inputclean({
deviationTop: 3
});
var $partnerCode = $('input[name=partnerCode]');
$partnerCode.inputclean({
inputClearClass: 'inputClearBtn',
deviationTop: 0,
parentHoverClass: 'inputParentLi',
clickCallback: function (e) {
checkPartnerTrigger();
}
});
var $invoice_title = $('input[name=invoice_title]');
$invoice_title.inputclean({
inputClearClass: 'inputClearBtn',
deviationTop: 0,
parentHoverClass: 'inputParentLi',
deviationLeft: 2
});
我使用的inputClearBtn 样式为:
.inputClearBtn {
position: absolute;
display: none;
width: 24px;
height: 25px;
background: url('http://www.static.chanjet.com/chanjet/images/appstore/delete.png?v=1437103227783') no-repeat;
cursor: pointer;
}
显示效果:
參考:placeholder插件的使用
inputclean插件的使用方法的更多相关文章
- Xcode7使用插件的简单方法&&以及怎样下载到更早版本的Xcode
Xcode7自2015年9上架以来也有段时间了, 使用Xcode7以及Xcode7.1\Xcode7.2的小伙伴会发现像VVDocumenter-Xcode\KSImageNamed-Xcode\HO ...
- notepad++ 编辑xml的插件和使用方法
notepad++ 编辑xml的插件和使用方法.mark http://blog.csdn.net/wangnan537/article/details/48712233
- 图片懒加载插件lazyload使用方法
图片懒加载插件lazyload使用方法 一.如何使用: Lazy Load 依赖于 jQuery.引入文件 <script type="text/javascript" sr ...
- UploadifyAPI-上传插件属性和方法介绍
上一篇文章简单的介绍了Uploadify上传插件的使用.但是对于常用的属性和方法并没有说明.授人以鱼不如授人以渔,我决定将常用的属性列举出来,供大伙参考参考. Uploadify属 ...
- eclipse安装插件的各种方法
做为当下最流行的开源IDE之一,Eclipse的一大优势就在于其无数优秀的插件.一个好的插件可以大大的提高我们的工作效率,学习如何安装Eclipse插件自然也是必修课了.下面介绍Eclipse插件的安 ...
- 代码高亮插件Codemirror使用方法及下载
代码高亮插件Codemirror使用方法及下载 - 老男孩的日志 - 网易博客 代码高亮插件Codemirror使用方法及下载 2013-10-31 16:51:29| 分类: 默认分类 | ...
- jQuery插件实现的方法和原理简单说明
下文来自 http://www.itzhai.com/jquery-plug-ins-to-achieve-the-methods-and-principles-of-simple-instructi ...
- dynamic-load-apk 插件与宿主方法互调
新建项目 DlPluginHost,下载dynamic-load-apk源码 1.将dynamic-load-apk 文件夹中的lib做为module导入到DlPlginHost 2.导入到Plugi ...
- ionic3.0--angular4.0 引入第三方插件库的方法
ionic3.0 引入第三方插件 (swiper),方法很多,现详细说明下官方推荐(typings)做法. 1.全局安装Typings 1. npm install -g typings 2.搜索你 ...
随机推荐
- [转]mysql Access denied for user 'root'@'localhost' 问题的解决方法
解决方案如下: # /etc/init.d/mysql stop # mysqld_safe --user=mysql --skip-grant-tables --skip-networking &a ...
- python_字符串,元组,格式化输出
一.字符串 1.字符串是有成对的单引号或者双引号括起来的.例如:name="张三",sex="女" 2.字符串的索引是从0开始的 3.字符串的切片 a.单个字符 ...
- equal(),hashcode(),toString()方法的作用
equal(),hashcode(),toString()方法的作用 这三个方法都是java.lang.Object的方法. equal();判断两对象是否相等hashcode();为对象在容器中添加 ...
- 【Luogu】P1419寻找段落(单调队列)
题目链接 不知为何状态突然奇差无比,按说这题本来应该是水题的,但不仅不会做,还比着题解爆零五次 二分平均值(想到了),单调队列维护最大区间和(想到了但是不会,???为什么我不会???) #includ ...
- ie,360浏览器出现无法打开网页(包括本地html)的解决方法
有一天,编写网页照例打开chrome,ie,360等浏览器,发现ie,360均无法打开本地网页,输入百度,也无法打开,从没遇到过这种情况,通过百度,找了几种方法,没解决, 后来,看到有一种原因可能是浏 ...
- [LOJ#121]动态图连通性
[LOJ#121]动态图连通性 试题描述 这是一道模板题. 你要维护一张无向简单图.你被要求加入删除一条边及查询两个点是否连通. 0:加入一条边.保证它不存在. 1:删除一条边.保证它存在. 2:查询 ...
- 安装环境 :win64
1.安装环境 :win64 1.1 下载mysql安装包地址: https://dev.mysql.com/downloads/file/?id=476233 2.安装 2.1 解压下载的ZIP压缩包 ...
- NOIP2012开车旅行 【倍增】
题目 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为Hi,城市 i 和城 ...
- PHP中的验证码类(验证码功能设计之二)
运行结果: <!--vcode.class.php内容--> <?php class Vcode { private $width; //宽 private $height; //高 ...
- Activation(hdu 4089)
题目:仙5的激活序列.有以下4种情况: 1.注册失败,但是不影响队列顺序 ,概率为p1 2.连接失败,队首的人排到队尾,概率为p2 3.注册成功,队首离开队列,概率为p3 4.服务器崩溃,激活停止,概 ...