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.搜索你 ...
随机推荐
- 《Scrum实战》第3次课【富有成效的每日站会】作业汇总
1组 崔儒: http://kecyru.blog.163.com/blog/static/2741661732017626101944123/ 2017-07-26 孟帅: http://www.c ...
- 关于dispatch_sync死锁问题
首先,我们来看下下面一个例子: 代码:(串行队列里同步线程嵌套) NSLog(@"haha"); dispatch_queue_t queue = dispatch ...
- 从Windows想Linux上传文件 Linux(CentOS) 上安装vsftpd
今天想在Linux上搭建个LAMP环境,以前用的Linux都安装了图形界面,但是这次用的阿里云服务器是纯命令模式,用起来有点不大适应. 最大的不适应就是获取apache等软件了,以前直接登录相应网站, ...
- Flask_配置文件
flask中的配置文件是一个flask.config.Config对象(继承字典),默认配置为: default_config = ImmutableDict({ 'DEBUG': get_debug ...
- Java多线程框架源码阅读之---ReentrantLock
ReentrantLock基于Sync内部类来完成锁.Sync有两个不同的子类NonfairSync和FairSync.Sync继承于AbstractQueuedSynchronizer. Reent ...
- 薛XX后代的IQ CSU1597【循环节】或【快速幂】
薛先生想改变后代的IQ,为此他发明了一种药,这种药有三种属性:A, B,P.他父亲的智商为X,薛先生的智商为Y,用了这种药之后,薛先生的孩子的智商就可以变为(AX+BY) mod P.后代的智商以此类 ...
- Clarke and five-pointed star
Clarke is a patient with multiple personality disorder. One day, Clarke turned into a learner of geo ...
- 紫书第三章训练1 E - DNA Consensus String
DNA (Deoxyribonucleic Acid) is the molecule which contains the genetic instructions. It consists of ...
- 九度oj 题目1470:调整方阵
题目描述: 输入一个N(N<=10)阶方阵,按照如下方式调整方阵:1.将第一列中最大数所在的行与第一行对调.2.将第二列中从第二行到第N行最大数所在的行与第二行对调. 依此类推...N-1.将第 ...
- Python 数据库到处到Excel
import MySQLdb import xlwt def outMySQL(file_name): wb = xlwt.Workbook() sh = wb.add_sheet('sheet 1' ...