加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【DW小技巧】HTML5新属性placeholder以及浏览器兼容方案

(2012-05-30 17:39:14)
标签:

杂谈

分类: DW相关

Placeholder是HTML5新增的另一个属性,当input或者textarea设置了该属性后,该值的内容将作为灰字提示显示在文本框中,当文本框获得焦点时,提示文字消失。以前要实现这效果都是用JavaScript来控制才能实现:

<input id="t1" type="text" placeholder="请输入文字" />

让其他浏览器兼容这一效果方案:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>验证Valid ----placeholder</title>
 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 <style>
 span.emptyhint {color:#999;position:absolute;padding:3px;}
 </style>
</head>
<body>
<div id=doc3>
 <div id="bd" >
 <div class="section-ctn">
 <ul>
 <li>
 <label class="k">订单主人:</label>
 <input type="text" placeholder="请填写订单主人" value="JK">

 </li>
 <li>
 <label class="k">订单号:</label>
 <input type="text" placeholder="请填写订单号">

 </li>
 <li>
 <label class="k">备注:</label>
 <textarea type="text" placeholder="请填写备注"></textarea>

 </li>
 </ul>
 </div>
 </div>
</div>
</body>

<script>

function initPlaceHolders(){
 if('placeholder' in document_createElement_x_x('input')){ //如果浏览器原生支持placeholder
 return ;
 }
 function target (e){
 var e=e||window.event;
 return e.target||e.srcElement;
 };
 function _getEmptyHintEl(el){
 var hintEl=el.hintEl;
 return hintEl && g(hintEl);
 };
 function blurFn(e){
 var el=target(e);
 if(!el || el.tagName !='INPUT' && el.tagName !='TEXTAREA') return;//IE下,onfocusin会在div等元素触发 
 var emptyHintEl=el.__emptyHintEl;
 if(emptyHintEl){
 //clearTimeout(el.__placeholderTimer||0);
 //el.__placeholderTimer=setTimeout(function(){//在360浏览器下,autocomplete会先blur再change
 if(el.value) emptyHintEl.style.display='none';
 else emptyHintEl.style.display='';
 //},600);
 }
 };
 function focusFn(e){
 var el=target(e);
 if(!el || el.tagName !='INPUT' && el.tagName !='TEXTAREA') return;//IE下,onfocusin会在div等元素触发 
 var emptyHintEl=el.__emptyHintEl;
 if(emptyHintEl){
 //clearTimeout(el.__placeholderTimer||0);
 emptyHintEl.style.display='none';
 }
 };
 if(document.addEventListener){//ie
 document.addEventListener('focus',focusFn, true);
 document.addEventListener('blur', blurFn, true);
 }
 else{
 document.attachEvent('onfocusin',focusFn);
 document.attachEvent('onfocusout',blurFn);
 }

 var elss=[document.getElementsByTagName_r('input'),document.getElementsByTagName_r('textarea')];
 for(var n=0;n<2;n++){
 var els=elss[n];
 for(var =0;i<els.length;i++){
 var el=els[i];
 var placeholder=el.getAttribute('placeholder'),
 emptyHintEl=el.__emptyHintEl;
 if(placeholder && !emptyHintEl){
 emptyHintEl=document_createElement_x_x('span');
 emptyHintEl.innerHTML=placeholder;
 emptyHintEl.className='emptyhint';
 emptyHintEl.onclick=function (el){return function(){try{el.focus();}catch(ex){}}}(el);
 if(el.value) emptyHintEl.style.display='none';
 el.parentNode.insertBefore(emptyHintEl,el);
 el.__emptyHintEl=emptyHintEl;
 }
 }
 }
}
initPlaceHolders();

</script>

</html> 


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有