html:text没有Placeholder属性,怎么用jQuery 实现

解决方案 »

  1.   

    <style>
    span.placeholder {color:#999;position:absolute;padding:3px;}
    </style><input tabindex="1" type="text" id="username" name="username" class="input required"
    style='background-color:#FFF; border:1px #b5b8c8 solid;width: 180px; height: 20px; color:#666; line-height: 21px; text-indent: 5px;'
    placeholder="请输入邮箱" />
    <script>
    function initPlaceHolders(){
    if('placeholder' in document.createElement('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('input'),document.getElementsByTagName('textarea')];
    for(var n=0;n<2;n++){
    var els=elss[n];
    for(var i =0;i<els.length;i++){
    var el=els[i];
    var placeholder=el.getAttribute('placeholder'),
    emptyHintEl=el.__emptyHintEl;
    if(placeholder && !emptyHintEl){
    emptyHintEl=document.createElement('span');
    emptyHintEl.innerHTML=placeholder;
    emptyHintEl.className='placeholder';
    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>
      

  2.   


    html:text没有Placeholder属性
    下面这一段是为html:text添加Placeholder属性:
    personnelSearchVal为styleID
    <script language="JavaScript" type="text/JavaScript">
                jQuery(function($) {
               $("#personnelSearchVal").attr('placeholder', '请输入全角文字');
               });
    </script>之后模拟Placeholder属性功能就可以了,
    我没试过2楼的模拟Placeholder是不是好用