placeholder 是 html5 的新属性,仅支持 html5 的浏览器才支持 placeholder,目前最新的 FF、Chrome、Safari、Opera 以及 IE10 都支持,IE6-IE9 都不支持!
placeholder 在各个浏览器下基本都是淡灰色显示,不同的地方在于 FF 和 Chrome 中,输入框获得焦点时,placeholder 文字没有变化,只有当输入框中输入了内容时,placeholder 文字才会消失;而在 Safari 和 IE10 下,当输入框获得焦点时,placeholder 文字便立即消失。
js 解决方法:
if( !("placeholder" in document.createElement("input")) ){ $("input[placeholder],textarea[placeholder]").each(function(){ var that = $(this), text= that.attr("placeholder"); if(that.val()===""){ that.val(text).addClass("placeholder"); } that.focus(function(){ if(that.val()===text){ that.val("").removeClass("placeholder"); } }) .blur(function(){ if(that.val()===""){ that.val(text).addClass("placeholder"); } }) .closest("form").submit(function(){ if(that.val() === text){ that.val(""); } }); }); }
在页面里引入 jquery,再执行上面这段代码即可!
例子:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>placeholder兼容</title> </head> <body> <input type="text" placeholder="我是提示文字">
<!-- 这里 src 改成你自己的 jquery 路径 --> <script type="text/javascript" src="../scripts/common/jquery-1.8.3.min.js"></script>
<script type="text/javascript"> $(function() { if( !('placeholder' in document.createElement('input')) ){ $('input[placeholder],textarea[placeholder]').each(function(){ var that = $(this), text= that.attr('placeholder'); if(that.val()===""){ that.val(text).addClass('placeholder'); } that.focus(function(){ if(that.val()===text){ that.val("").removeClass('placeholder'); } }) .blur(function(){ if(that.val()===""){ that.val(text).addClass('placeholder'); } }) .closest('form').submit(function(){ if(that.val() === text){ that.val(''); } }); }); } }); </script> </body> </html>
到此,placeholder 兼容问题已解决!