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插件的使用方法的更多相关文章

  1. Xcode7使用插件的简单方法&&以及怎样下载到更早版本的Xcode

    Xcode7自2015年9上架以来也有段时间了, 使用Xcode7以及Xcode7.1\Xcode7.2的小伙伴会发现像VVDocumenter-Xcode\KSImageNamed-Xcode\HO ...

  2. notepad++ 编辑xml的插件和使用方法

    notepad++ 编辑xml的插件和使用方法.mark http://blog.csdn.net/wangnan537/article/details/48712233

  3. 图片懒加载插件lazyload使用方法

    图片懒加载插件lazyload使用方法 一.如何使用: Lazy Load 依赖于 jQuery.引入文件 <script type="text/javascript" sr ...

  4. UploadifyAPI-上传插件属性和方法介绍

    上一篇文章简单的介绍了Uploadify上传插件的使用.但是对于常用的属性和方法并没有说明.授人以鱼不如授人以渔,我决定将常用的属性列举出来,供大伙参考参考.           Uploadify属 ...

  5. eclipse安装插件的各种方法

    做为当下最流行的开源IDE之一,Eclipse的一大优势就在于其无数优秀的插件.一个好的插件可以大大的提高我们的工作效率,学习如何安装Eclipse插件自然也是必修课了.下面介绍Eclipse插件的安 ...

  6. 代码高亮插件Codemirror使用方法及下载

    代码高亮插件Codemirror使用方法及下载 - 老男孩的日志 - 网易博客 代码高亮插件Codemirror使用方法及下载   2013-10-31 16:51:29|  分类: 默认分类 |   ...

  7. jQuery插件实现的方法和原理简单说明

    下文来自 http://www.itzhai.com/jquery-plug-ins-to-achieve-the-methods-and-principles-of-simple-instructi ...

  8. dynamic-load-apk 插件与宿主方法互调

    新建项目 DlPluginHost,下载dynamic-load-apk源码 1.将dynamic-load-apk 文件夹中的lib做为module导入到DlPlginHost 2.导入到Plugi ...

  9. ionic3.0--angular4.0 引入第三方插件库的方法

    ionic3.0 引入第三方插件 (swiper),方法很多,现详细说明下官方推荐(typings)做法. 1.全局安装Typings 1. npm install -g typings  2.搜索你 ...

随机推荐

  1. 《Scrum实战》第3次课【富有成效的每日站会】作业汇总

    1组 崔儒: http://kecyru.blog.163.com/blog/static/2741661732017626101944123/ 2017-07-26 孟帅: http://www.c ...

  2. 关于dispatch_sync死锁问题

    首先,我们来看下下面一个例子: 代码:(串行队列里同步线程嵌套)     NSLog(@"haha");     dispatch_queue_t queue = dispatch ...

  3. 从Windows想Linux上传文件 Linux(CentOS) 上安装vsftpd

    今天想在Linux上搭建个LAMP环境,以前用的Linux都安装了图形界面,但是这次用的阿里云服务器是纯命令模式,用起来有点不大适应. 最大的不适应就是获取apache等软件了,以前直接登录相应网站, ...

  4. Flask_配置文件

    flask中的配置文件是一个flask.config.Config对象(继承字典),默认配置为: default_config = ImmutableDict({ 'DEBUG': get_debug ...

  5. Java多线程框架源码阅读之---ReentrantLock

    ReentrantLock基于Sync内部类来完成锁.Sync有两个不同的子类NonfairSync和FairSync.Sync继承于AbstractQueuedSynchronizer. Reent ...

  6. 薛XX后代的IQ CSU1597【循环节】或【快速幂】

    薛先生想改变后代的IQ,为此他发明了一种药,这种药有三种属性:A, B,P.他父亲的智商为X,薛先生的智商为Y,用了这种药之后,薛先生的孩子的智商就可以变为(AX+BY) mod P.后代的智商以此类 ...

  7. Clarke and five-pointed star

    Clarke is a patient with multiple personality disorder. One day, Clarke turned into a learner of geo ...

  8. 紫书第三章训练1 E - DNA Consensus String

    DNA (Deoxyribonucleic Acid) is the molecule which contains the genetic instructions. It consists of ...

  9. 九度oj 题目1470:调整方阵

    题目描述: 输入一个N(N<=10)阶方阵,按照如下方式调整方阵:1.将第一列中最大数所在的行与第一行对调.2.将第二列中从第二行到第N行最大数所在的行与第二行对调. 依此类推...N-1.将第 ...

  10. Python 数据库到处到Excel

    import MySQLdb import xlwt def outMySQL(file_name): wb = xlwt.Workbook() sh = wb.add_sheet('sheet 1' ...