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.搜索你 ...
随机推荐
- Install Oracle 11G Release 2 (11.2) on Centos Linux 7
Install Oracle 11G Release 2 (11.2) on Centos Linux 7 This article presents how to install Oracle 11 ...
- 如何让ie8/ie7/ie6支持html5的<footer></footer><nav></nav>等标签
使用他们能让代码语义化更直观,而且更方便SEO优化.但是此HTML5新标签在IE6/IE7/IE8上并不能识别,需要进行JavaScript处理.以下就介绍几种方式. 方式一:Coding JavaS ...
- 如何用jquery+json来写页面
以下是json数据表: [ { "p" : "银川市", "c" : [{"c1":"兴庆区"},{ ...
- mongodb的基本操作数据更新
先启动服务器 查看数据库 选择数据库 删除数据库 插入信息 查看插入的表名 查看信息 修改表数据 修改指定信息,其他信息不改变 可以使不存在的命令进行修改并保存 修改多条数据 删除数据 删除表 查看集 ...
- Codeforces Round #470 (rated, Div. 2, based on VK Cup 2018 Round 1)
A. Protect Sheep time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- AtCoder Regular Contest 064 F - Rotated Palindromes
Problem Statement Takahashi and Aoki are going to together construct a sequence of integers. First, ...
- rabbitmq exchange type
This is the fourth installment to the series: RabbitMQ for Windows. In thelast installment, we revi ...
- CSS编码规范(转)
1 前言 CSS作为网页样式的描述语言,在百度一直有着广泛的应用.本文档的目标是使CSS代码风格保持一致,容易被理解和被维护. 虽然本文档是针对CSS设计的,但是在使用各种CSS的预编译器(如less ...
- [luoguP2764] 最小路径覆盖问题(最大流 || 二分图最大匹配)
传送门 可惜洛谷上没有special judge,不然用匈牙利也可以过的,因为匈牙利在增广上有一个顺序问题,所以没有special judge就过不了了. 好在这个题的测试数据比较特殊,如果是网络流的 ...
- NOIP2017赛前模拟(5):总结
题目: 1.刮刮卡 已知n(n<=1000000)张刮刮卡按顺序排列,刮开可以获得B元现金和B个积分,购买刮刮卡需要A元,某人若按照顺序刮开的话··当B的总和小于A时便会停止刮卡(即花出去的钱多 ...