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 清空文本框之后的回调事件 比如清空文本框之后,提交按钮应该置灰
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插件的使用

时间: 2024-08-29 09:41:03

inputclean插件的用法的相关文章

Jquery树插件zTree用法入门教程

 这篇文章主要介绍了Jquery树插件zTree用法入门教程,实例分析了zTree插件的使用技巧,非常具有实用价值,需要的朋友可以参考下     本文实例分析了Jquery树插件zTree用法.分享给大家供大家参考.具体分析如下: 关于zTree的介绍就搜吧. 这个例子的最终效果如下: 鼠标移动到一级目录时出现全选链接,点击全选链接该目录下的所有子项都被添加到收件人的文本框中,当然点击单个子项则添加一个.至于要添加些什么信息由自己决定. 1. 下载zTee,页面引入jquery.js,根据功能需

JQuery表单验证插件EasyValidator用法分析_jquery

本文实例讲述了JQuery表单验证插件EasyValidator用法.分享给大家供大家参考.具体如下: 本插件的宗旨是:用户无需写一行JS验证代码,只需在要验证的表单中加入相应的验证属性即可,让验证功能易维护,可扩展,更容易上手. DEMO中已经包含了常用的正则表达式,可以直接复用,为了考虑扩展性,所以针对不同用户特殊需求,自行写正则吧. EasyValidator实现的功能: 1.提示功能(在表单或者其他标签中加入tip="想提示的文字") 如: 复制代码 代码如下: <inp

JS实现的图片预览插件与用法示例【不上传图片】_javascript技巧

本文实例讲述了JS实现不需要上传的图片预览插件与用法.分享给大家供大家参考,具体如下: 小小的几十行代码,很牛逼,很实用. 支持多个图片的预览,只要new多个对象就行了. html如下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns

jQuery表格插件datatables用法汇总_jquery

DataTables是一个jQuery的表格插件,本文为大家分享了表格插件datatables用法,介绍了基础的部分知识,具体内容如下 一.初始化 在页面中 <!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.11/css/jquery.dataTables.css&

jQuery表格插件datatables用法详解_jquery

一.Datatables简介DataTables是一个jQuery的表格插件.这是一个高度灵活的工具,依据的基础逐步增强,这将增加先进的互动控制,支持任何HTML表格.主要特点: 自动分页处理 即时表格数据过滤 数据排序以及数据类型自动检测 自动处理列宽度 可通过CSS定制样式 支持隐藏列 易用 可扩展性和灵活性 国际化 动态创建表格 免费的 二.如何使用在做后台的时候并没有美工和前端工程师来配合你做页面,为了显示数据并有一定的美感,我们可以使用jQuery的DataTables插件来帮助我们完

基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解_javascript技巧

Bootstrap文件上传插件File Input是一个不错的文件上传控件,但是搜索使用到的案例不多,使用的时候,也是一步一个脚印一样摸着石头过河,这个控件在界面呈现上,叫我之前使用过的Uploadify 好看一些,功能也强大些,本文主要基于我自己的框架代码案例,介绍其中文件上传插件File Input的使用. 1.文件上传插件File Input介绍 这个插件主页地址是:http://plugins.krajee.com/file-input,可以从这里看到很多Demo的代码展示:http:/

jQuery焦点图轮播插件KinSlideshow用法分析_jquery

本文实例讲述了jQuery焦点图轮播插件KinSlideshow用法.分享给大家供大家参考,具体如下: <!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"

jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)_jquery

本文实例讲述了jQuery购物车插件jsorder用法.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"/> <title></title> <script type="text/javascript

jQuery日历插件datepicker用法详解_jquery

 jQuery是一款不可多得的非常优秀的javascript脚本开发库,而基于其上的很多插件也是非常规范和卓越的,如果错过这番美景真是太可惜了,比如datepicker这个插件. 一般MIS系统的前端,尤其是用户注册页面,都会有诸如"出身年月"的日期输入框,最简单的做法就是使用一个<input type="text"/>标签,这样做的弊端有很多:首先是与数据库字段类型的匹配.其次是输入日期的合法性如"13月"或者闰年等等问题,如果深入