placeholder-not-working-for-internet-explorer如果输入类型是密码,仍显示*********

时间:2012-10-05 07:38:04

标签: javascript

我在Placeholder not working for Internet Explorer

得到了1个答案

我正在使用此代码,

window.onload = function() { 
    var arrInputs = document.getElementsByTagName("input"); 
    for (var i = 0; i < arrInputs.length; i++) { 
        var curInput = arrInputs[i]; 
        if (!curInput.type || curInput.type == "" || curInput.type == "text"|||| curInput.type == "password") 
            HandlePlaceholder(curInput); 
    } 
}; 



function HandlePlaceholder(oTextbox) { 
    if (typeof oTextbox.placeholder == "undefined") { 
        var curPlaceholder = oTextbox.getAttribute("placeholder"); 
        if (curPlaceholder && curPlaceholder.length > 0) { 
            oTextbox.value = curPlaceholder; 
            oTextbox.setAttribute("old_color", oTextbox.style.color); 
            oTextbox.style.color = "#c0c0c0"; 
            oTextbox.onfocus = function() { 
                this.style.color = this.getAttribute("old_color"); 
                if (this.value === curPlaceholder) 
                    this.value = ""; 
            }; 
            oTextbox.onblur = function() { 
                if (this.value === "") { 
                    this.style.color = "#c0c0c0"; 
                    this.value = curPlaceholder; 
                } 
            }; 
        } 
    } 
} 

那很好,但现在我遇到了问题,在哪里代替显示“密码”,它显示********特殊符号,有什么方法可以解决这个问题

2 个答案:

答案 0 :(得分:1)

你可以解决它的唯一方法是使用另一个元素(隐藏原始元素,或在顶部放置一个新元素)。遗憾的是,Internet Explorer不允许您更改type元素的input属性。此代码(来自我的placeholder polyfill,Placeholders.js)演示了此问题:

if (element.type === "password") {
    // The `type` property is read-only in IE < 9, so in those cases we just move on. The placeholder will be displayed masked
    try {
        element.type = "text";
        element.setAttribute("data-placeholdertype", "password");
    } catch (e) {}
}

这意味着我们可以很好地支持IE以外的所有浏览器。除非你想创建一个新元素(这不是我想要在polyfill中使用的路径),否则你将不得不忍受它。

答案 1 :(得分:0)

IE 9及更低版本不支持占位符参数:http://caniuse.com/#feat=input-placeholder

(我猜这就是你写自己的东西的原因)

唯一的选择是在显示占位符时将type="password"更改为type="text",并在删除占位符时将其更改回来。

您还可以使用polyfills的长列表之一(部分:Web表单:输入占位符)