让 IE 支持HTML5 placeholder

  HTML5 新增的placeholder属性已经得到现代浏览器的支持,旨在提供简单的API可以为文本输入框设置 描述输入字段预期值的提示信息(hint)。

  这是W3C在标准化的过程中对用户体验的更多考虑。但是这一属性在IE却没有得到很好的支持,至少到IE9没有被支持,那么,我们在使用placeholder的时候可以为IE写一个扩展的JS脚本,让IE也支持placeholder。

  我们只需在页面loaded后运行一个函数,就能让IE支持placeholder。

  

 1 function setIEplaceHolder () {
 2     if ("placeholder" in document.createElement("input")) {
 3             return;
 4         }
 5         function placeHolder (elem) {
 6 
 7             var left = elem.offsetLeft, top = elem.offsetTop,
 8                 paddingLeft = parseInt(elem.currentStyle.paddingLeft),
 9                 paddingTop = parseInt(elem.currentStyle.paddingTop),
10                 placeValue = elem.getAttribute("placeholder"),
11                 span = document.createElement("span");
12             
13             span.innerHTML = placeValue;
14             span.style.position = "absolute";
15             span.style.left = left + paddingLeft + 2 + "px";
16             span.style.top = top + paddingTop + 2 + "px";
17             span.style.color = "#999";
18             
19             elem.parentNode.appendChild(span);
20 
21             span.onclick = function () {
22                 elem.focus();
23             }
24 
25             elem.attachEvent('onpropertychange', function () {
26                 if (elem.value.length > 0) {
27                     span.style.visibility = "hidden";
28                 } else {
29                     span.style.visibility = "visible";
30                 }
31             });
32         }
33         //input
34         var inputs = document.getElementsByTagName("input"),
35             len = inputs.length;
36         for (var i=0; i<len; i++) {
37             if (inputs[i].getAttribute("placeholder")) {
38                 placeHolder(inputs[i]);
39             }            
40         }
41         //textarea
42         var textareas = document.getElementsByTagName("textarea"),
43             len = textareas.length;
44         for (var i=0; i<len; i++) {
45             if (textareas[i].getAttribute("placeholder")) {
46                 placeHolder(textareas[i]);
47             }            
48         }
49 }
原文地址:https://www.cnblogs.com/guozeng/p/3525753.html