jquery.newplaceholder.js

/*!
 * Author:UEDfuns.com
 * Date:2013-3-7
 * FileName:jquery.placeholder.js HTML5 placeholder plugin jQuery1.4+
*/
(function($, undefined) {
    $.fn.placeholder = function(options) {
        var defaults = {
            labelMode: false,
            labelStyle: {},
            labelAlpha: false,
            labelAcross: false
        };
        var params = $.extend({}, defaults, options || {});
        
        //方法
        var funLabelAlpha = function(elementEditable, elementCreateLabel) {
            if (elementEditable.val() === "") {
                elementCreateLabel.css("opacity", 0.4).html(elementEditable.data("placeholder"));
            } else {
                elementCreateLabel.html("");    
            }
        };
        
        $(this).each(function() {
            var element = $(this), isPlaceholder = "placeholder" in document.createElement("input"), placeholder = (function(ele) {
                // 为了向下兼容jQuery 1.4
                if (document.querySelector) {
                    return $(ele).attr("placeholder");    
                } else {
                    // IE6, 7
                    var ret;
                    ret = ele.getAttributeNode("placeholder");
                    // Return undefined if nodeValue is empty string
                    return ret && ret.nodeValue !== "" ? ret.nodeValue : undefined;    
                }    
            })(this);
            
            // 三种情况打酱油
            // ① 没有placeholder属性值
            // ② value模拟,同时是支持placeholder属性的浏览器
            // ③ label模拟,但是无需跨浏览器兼容,同时是支持placeholder属性的浏览器
            if (!placeholder || (!params.labelMode && isPlaceholder) || (params.labelMode && !params.labelAcross && isPlaceholder)) { return; }

            // 存储,因为有时会清除placeholder属性
            element.data("placeholder", placeholder);
            
            // label模拟
            if (params.labelMode) {            
                var idElement = element.attr("id"), elementLabel = null;
                if (!idElement) {
                    idElement = "placeholder" + Math.random();    
                    element.attr("id", idElement);
                }
                
                // 状态初始化
                elementLabel = $('<label for="'+ idElement +'"></label>').css($.extend({
                    lineHeight: "1.3",
                    position: "absolute",
                    color: "graytext",
                    cursor: "text",
                    margin: element.css("margin"),
                    padding: element.css("padding")
                }, params.labelStyle)).insertBefore(element);                
                
                // 事件绑定
                if (params.labelAlpha) {
                    // 如果是为空focus透明度改变交互
                    element.bind({
                        "focus": function() {
                            funLabelAlpha($(this), elementLabel);
                        },
                        "input": function() {
                            funLabelAlpha($(this), elementLabel);
                        },
                        "blur": function() {
                            if (this.value === "") {
                                elementLabel.css("opacity", 1).html(placeholder);  
                            }    
                        }
                    });    
                    
                    //IE6~8不支持oninput事件,需要另行绑定
                    if (!window.screenX) {
                        element.bind("keyup", function() {
                            funLabelAlpha($(this), elementLabel);    
                        });
                        element.get(0).onpaste = function() {
                            setTimeout(function() {
                                funLabelAlpha(element, elementLabel);    
                            }, 30);    
                        }
                    }
                    
                    // 右键事件
                    elementLabel.get(0).oncontextmenu = function() {
                        element.trigger("focus");
                        return false;    
                    }
                } else {
                    //如果是单纯的value交互
                    element.bind({
                        "focus": function() {
                            elementLabel.html("");
                        },
                        "blur": function() {
                            if ($(this).val() === "") {
                                elementLabel.html(placeholder);    
                            }
                        }
                    });    
                }
                
                // 内容初始化
                if (params.labelAcross) {
                    element.removeAttr("placeholder");    
                }
                
                if (element.val() === "") {
                    elementLabel.html(placeholder);    
                }
            } else {
                // value模拟
                element.bind({
                    "focus": function() {
                        if ($(this).val() === placeholder) {
                            $(this).val("");
                        }
                        $(this).css("color", "");    
                    },
                    "blur": function() {
                        if ($(this).val() === "") {
                            $(this).val(placeholder).css("color", "graytext");    
                        }    
                    }
                });    
                
                // 初始化
                if (element.val() === "") {
                    element.val(placeholder).css("color", "graytext");      
                }
            }    
        });
        return $(this);
    };    
})(jQuery);
$(function(){
    //placeholder效果模拟
    $("[placeholder]").each(function(){
        var height = $(this).height();
        $(this).placeholder({
            labelMode: true,
            labelStyle: {height: height + "px",lineHeight: height + "px",verticalAlign:"middle",color: "#A0A0A0", paddingLeft:"10px"}
        });
    });
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jQuery是一个JavaScript库,用于简化HTML文档遍历、事件处理、动画效果等操作。为了使用jQuery的功能,我们需要在HTML文档中引入jQuery.jsjQuery.jsjQuery库的核心文件,它包含了所有的jQuery函数和方法。通过在HTML文档的<head>标签或<body>标签底部引入jQuery.js,我们可以在代码中使用jQuery提供的丰富功能。 按照惯例,我们可以通过以下方式引入jQuery.js: 1. 从jQuery官网下载jQuery.js文件,然后将其保存到本地服务器上的某个文件夹中。 2. 在HTML文档的<head>标签中插入以下代码来引入jQuery.js: <script src="路径/jquery.js"></script> 这里的路径是指jQuery.js文件所在的位置相对于HTML文件的路径。 3. 如果我们不想下载jQuery.js文件,也可以使用CDN(内容分发网络)来引入jQuery.js。在HTML文档的<head>标签中插入以下代码: <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> 这将直接从CDN服务器加载最新版本的jQuery.js文件。 引入jQuery.js后,我们就可以在JavaScript代码中使用jQuery的功能了,如选择元素、绑定事件、执行动画等。一旦成功引入了jQuery.js,我们就可以通过使用相应的jQuery方法和函数来实现我们的需求。 总而言之,为了使用jQuery库的功能,我们需要在HTML文档中引入jQuery.js文件,并按照指定的路径或使用CDN来加载它。这样就可以在JavaScript代码中使用jQuery的强大功能,简化我们的开发过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值