• ie8中支持 password 的 placeholder


    之前写过一篇 ie8中使用placeholder 的博客,但是,该文中的 placeholder 在 type="password" 时会出现问题,不能显示文字而是密码类型的点,所以又找了以下的这段代码,可以解决密码的问题,使用方法和之前介绍的一样,只需在 </body> 之前引用该 js 文件即可。

    (function () {
        var EventUtil = {
            addHandler: function (element, type, handler) {
                if (element.addEventListener) {
                    element.addEventListener(type, handler, false);
                } else if (element.attachEvent) {
                    element.attachEvent("on" + type, handler);
                } else {
                    element["on" + type] = handler;
                }
            },
            getCharCode: function (event) {
                if (typeof event.charCode === "number") {
                    return event.charCode;
                } else {
                    return event.keyCode;
                }
            },
            getEvent: function (event) {
                return event ? event : window.event;
            },
            getTarget: function (event) {
                return event.target || event.srcElement;
            }
        };
        EventUtil.addHandler(document, 'readystatechange', function () {
            if (!('placeholder' in document.createElement('input'))) {
                var inputdoc = document.getElementsByTagName('input');
                var hasPlaceholder = new Array();
                for (var i in inputdoc) {
                    if (typeof (inputdoc[i]) === 'object' && inputdoc[i].getAttribute('placeholder') != null) {
                        hasPlaceholder.push(inputdoc[i]);
                    }
                }
                if (hasPlaceholder.length > 0) {
                    var holders = new Array;
                    for (var i = 0; i < hasPlaceholder.length; i++) {
                        var span = document.createElement('span');
                        // span.className = 'ui-placeholder';
                        var input = hasPlaceholder[i];
                        span.height = input.height;
                        span.width = input.width;
                        span.innerHTML = input.getAttribute('placeholder');
                        if (input === input.parentNode.lastChild) {
                            input.parentNode.appendChild(span);
                        } else {
                            input.parentNode.insertBefore(span, input.nextSibling);
                        }
                        span.style.color = "#999";
                        span.style.textIndent = '0.5em';
                        span.style.position = "absolute";
                        span.style.top = input.offsetTop + "6px";
                        span.style.left = input.offsetLeft;
                        holders[i] = span;
                    }
                    var togglePlaceholder = function (event) {
                        event = EventUtil.getEvent(event);
                        var target = EventUtil.getTarget(event);
                        // alert(target.value)
                        for (var i in hasPlaceholder) {
                            if (target === hasPlaceholder[i]) {
                                if (hasPlaceholder[i].value != '') {
                                    holders[i].style.display = 'none';
                                } else if (/[a-zA-Z0-9`~!@#$%^&*()_+-=[]{};:'"|\,./?<>]/.test(String.fromCharCode(EventUtil.getCharCode(event)))) {
    
                                    holders[i].style.display = 'none';
                                } else {
                                    holders[i].style.display = 'block';
                                }
                            }
                        }
                    }
    
                    EventUtil.addHandler(document, 'keydown', togglePlaceholder)
    
                    EventUtil.addHandler(document, 'keyup', function (event) {
                        event = EventUtil.getEvent(event);
                        var target = EventUtil.getTarget(event);
                        // alert(target.value)
                        for (var i in hasPlaceholder) {
                            if (target === hasPlaceholder[i]) {
                                if (hasPlaceholder[i].value != '') {
                                    holders[i].style.display = 'none';
                                } else {
                                    holders[i].style.display = 'block';
                                }
                            }
                        }
                    })
                }
            }
        })
    }).call()

    原文在 ie的placeholder支持

  • 相关阅读:
    php smarty使用..
    深圳面试!
    jQuery 源码分析..
    jQuery 使用技巧!!!
    TOMCAT 访问过程...
    准备使用Delphi调用WCF
    Delphi 中Format的字符串格式化使用说明(转载http://hi.baidu.com/test__123/blog/item/e3bba1599d717a2d2834f092.html)
    电脑启动程序自动启动
    判断输入字符串是否等效Int32位数字的两种方法
    vs2005 快捷键
  • 原文地址:https://www.cnblogs.com/ntt1219/p/3480440.html
Copyright © 2020-2023  润新知