inputclean插件的用法

简介: <div class="markdown_views"><p>inputclean插件的用法 <br>语言:javascript <br>是jquery插件, <br>目的:给文本框增加×,点击×,即可清空文本框内容. <br>如图: <br><img src="http://img.blog.csdn.net/20150729225932512" alt="inpu

inputclean插件的用法
语言:javascript
是jquery插件,
目的:给文本框增加×,点击×,即可清空文本框内容.
如图:
inputclean的样子
具体交互效果:
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插件的使用

相关文章
|
6天前
|
云安全 监控 安全
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1254 8
|
5天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
376 10
|
3天前
|
人工智能
自动化读取内容,不会写爆款的普通人也能产出好内容,附coze工作流
陌晨分享AI内容二创工作流,通过采集爆款文案、清洗文本、智能改写,实现高效批量生产。五步完成从选题到输出,助力内容创作者提升效率,适合多场景应用。
214 104
|
17天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
1202 43
|
17天前
|
人工智能 前端开发 算法
大厂CIO独家分享:AI如何重塑开发者未来十年
在 AI 时代,若你还在紧盯代码量、执着于全栈工程师的招聘,或者仅凭技术贡献率来评判价值,执着于业务提效的比例而忽略产研价值,你很可能已经被所谓的“常识”困住了脚步。
998 84
大厂CIO独家分享:AI如何重塑开发者未来十年
|
13天前
|
存储 自然语言处理 测试技术
一行代码,让 Elasticsearch 集群瞬间雪崩——5000W 数据压测下的性能避坑全攻略
本文深入剖析 Elasticsearch 中模糊查询的三大陷阱及性能优化方案。通过5000 万级数据量下做了高压测试,用真实数据复刻事故现场,助力开发者规避“查询雪崩”,为您的业务保驾护航。
595 32

热门文章

最新文章