让 IE 支持HTML5 placeholder
2014-01-19 10:25 那时me年少 阅读(243) 评论(0) 编辑 收藏 举报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 }