input输入框为空时,添加默认提示jquery插件

作为一枚前端工程师,我们经常会遇到处理页面输入框的时候,当输入框没有内容时,需要默认给加上一些提示内容。已引导用户正确顺畅的填写表单或输入搜索内容等,比如:“请输入用户名…”、“请输入搜索内容..”。

当用户单击输入框内(表单获得焦点),提示内容消失,等待用户输入完成,如果用户没有输入任何内容而离开,输入框失去焦点,提示重新出现。

如果你和我一样也一枚前端工程师,这样的情况会经常出现,处理这些,代码量并不大,但每次都要处理一遍,于是我就把这个小功能写成了一个独立的小插件,来减轻这种重复劳动的负担,(ps:程序员就是在这样不断封装和创造方便的过程中砸了自己的饭碗

插件效果如下(鼠标单击输入框内然后离开查看效果):

插件代码(文章结尾提供下载):

 /**
 * emptyValue 默认关键字效果
 */
(function($){
    $.fn.emptyValue = function(arg){
        this.each(function(){
            var input = $(this);
            var options = arg;
            if(typeof options == "string"){
                options = {empty: options}
            }
            options = jQuery.extend({
                empty: input.attr("data-empty")||"",
                className: "gray"
            }, options);
            return input.focus(function(){
                $(this).removeClass(options.className);
                if($(this).val() == options.empty){
                    $(this).val("");
                }
            }).blur(function(){
                if($(this).val()==""){
                    $(this).val(options.empty);
                }
                $(this).addClass(options.className);
            }).blur();
        });
    };
})(jQuery);

代码量并不多吧。

使用方法

先引入jquery和插件代码,这个就不多说了。

调用代码如下:

//有三种调用方法

//第一种
jQuery("input").emptyValue();
//这中调用方法写起来最简单,但需要所选择input标签含有data-empty属性
//用于记录输入框为空时候的提示内容

//第二种
jQuery("input").emptyValue("请输入要搜索的内容");
//直接将提示内容传递进去,优先级要高于第一种方法

//第三种
jQuery("input").emptyValue({
    empty: "请输入要搜索的内容", //传入提示内容
    className: "gray" //输入框失去焦点时,输入框的样式名,通常用户让字体颜色变灰
});
//gray样式代码:
.gray{
    color:#999;
}

好了就这些了,有不对或不好的地方欢迎斧正,谢谢!

—华丽丽的分割线———————————————————————-

2012年1月5日更新

在使用以上插件以后,添加input的默认提示变得容易很多,但是,在我们没有输入任何内容的时候,我们用jquery的val方法获取input的值的时候遇到了麻烦。他会返回诸如“请输入搜索内容…”的文字,这个时候我们需要单独判断是不是等于默认的空提示,来过滤为空提示信息,这是我们不希望看到的。那该怎么办呢?

办法有俩个。第一,我们再单独写一个类似于jquery val的方法,如val2。这个方法过滤掉提示内容,但这个方法在使用上不是很方便,需要使用者记住一些非jquery原生的方法名。

第二个办法,我们重写jquey val方法,来过滤提示消息,这样在使用的时候就完全不用管提示消息的存在。还是像原来一样处理input。不会因此额外增加任何判断代码。
新版插件代码如下,替换上面的插件代码,使用方式不变:

/**
 * emptyValue plugin 默认关键字效果
 * @version 1.3
 * @authod 雨打浮萍
 * Copyright (c) 2012 雨打浮萍 (http://www.rainleaves.com/)
 * For more docs and examples visit:
 * http://www.rainleaves.com/html/1357.html
 */
(function($){
	$.fn.val2 = $.fn.val;
	$.fn.emptyValue = function(arg){
        this.each(function(){
            var input = $(this);
            var options = arg;
            if(typeof options == "string"){
                options = {empty: options}
            }
            options = jQuery.extend({
                empty: input.attr("data-empty")||"",
                className: "gray"
            }, options);
            input.attr("data-empty",options.empty);
            return input.focus(function(){
                $(this).removeClass(options.className);
                if($(this).val2() == options.empty){
                    $(this).val2("");
                }
            }).blur(function(){
                if($(this).val2()==""){
                    $(this).val2(options.empty);
                }
                $(this).addClass(options.className);
            }).blur();
        });
    };
    //重写jquery val方法,增加data-empty过滤
    $.fn.val = function(){
    	var value = $(this).val2.apply(this,arguments);
    	var empty = $(this).attr("data-empty");
    	if(typeof empty != "undefined"&&empty==value){
    		value = "";
    	}
    	return value;
    };
})(jQuery);

完善版jquery emptyValue插件下载:jQuery.emptyValue.js

转载请注明本文链接:http://www.rainleaves.com/html/1357.html

input输入框为空时,添加默认提示jquery插件(转载),古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。