1

InternetExplorerで機能しないプレースホルダーで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; 
                } 
            }; 
        } 
    } 
} 

それは素晴らしいことですが、今私は問題を抱えています。「パスワード」を表示する代わりに、********の特別な記号を表示していますが、これを解決する方法はありますか?

4

2 に答える 2

1

これを解決できる唯一の方法は、別の要素を使用することです (元の要素を非表示にするか、新しい要素を上に配置します)。残念ながら、Internet Explorer では要素のtype属性を変更することはできません。inputこのコード (私のplaceholderポリフィル、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 を除くすべてのブラウザを十分にサポートできることを意味します。新しい要素を作成したい場合を除いて (それは私がポリフィルに取り入れたいルートではありません)、それと一緒に暮らす必要があります。

于 2012-10-05T07:43:46.100 に答える
0

placeholder パラメータは IE 9 以前ではサポートされていません: http://caniuse.com/#feat=input-placeholder

(それがあなたが自分のものを書いた理由だと思います)

唯一のオプションは、プレースホルダーを表示type="password"するtype="text"ときに を変更し、プレースホルダーが削除されたときに元に戻すことです。

ポリフィルの長いリストの 1 つを使用することもできます(セクション: Web フォーム: 入力プレースホルダー)。

于 2012-10-05T07:40:07.743 に答える