ieがplaceholderをサポートしていない問題を解決する

10462 ワード

html 5のinputタグには強力なplaceholder属性があるが、ie 9以下はサポートされていない(ie 9を含む).この問題を解決するために.自分でjs制御を書く必要があります
<!DOCTYPE html>

<html >

<head>

<meta charset="utf-8"/>

<title>placeholder      </title>

<link rel="stylesheet" href="../css/base.css" />

<style type="text/css">

.wrap{padding:200px;}

.search_box{width:226px;height:36px;line-height:36px;border:1px solid #ddd;}

.search_box .input_box{position:relative;}

.search_box input{float:left;border:0 none;width:142px;height:36px;line-height:36px;padding:0 4px;}

.search_box .btn_search{display:block;width:76px;height:36px;background:url('search.png') no-repeat;}

.placeholder{position:absolute;top:0;left:0;color:#999;z-index:1;}

</style>

</head>



<body>

    <div class="wrap">

        <div class="search_box">

            <div class="input_box left"><input type="text" placeholder="      " /></div>

            <a class="btn_search right" href="javascript:void(0);" class="right"></a>

        </div>

    </div>

</body>

<script type="text/javascript" src="../../js/jquery.js"></script>

<script type="text/javascript">

var placeholder={

    _add:function(ele){

        if(!("placeholder" in document.createElement("input"))){//  input     placeholder  

            //alert("beign");

            var self=placeholder;

        ele.each(function(e){

                var _this=$(this),

                    attr_plac=_this.attr("placeholder");

                if(attr_plac){//  placeholder  

                    var e_id=_this.attr("id");

                    if(!e_id){//   input      id

                        var dt=new Date();

                        e_id=="lbl_"+dt.getSeconds()+dt.getMilliseconds();

                        _this.attr("id",e_id);

                    }

                    var new_lbl=document.createElement("label");

                    new_lbl.setAttribute("for",e_id);

                    new_lbl.className="placeholder";

                    $(new_lbl).css("padding",_this.css("padding"));

                    alert(_this.css("padding"));

                    $(new_lbl).css("margin",_this.css("margin"));

                    $(new_lbl).css("line-height",_this.css("line-height"));

                    new_lbl.innerHTML=attr_plac;

                    $(new_lbl).insertBefore(_this);

                    _this.bind("focus",self._focus);

                    _this.bind("click",self._focus);

                    _this.bind("blur",self._blur);

                }

            })

        }

    },

    _focus:function(){

        var _this=$(this);

            _this.siblings("label").hide();



    },

    _blur:function(){

        var _this=$(this);

        if($.trim(_this.val()).length==0||_this.val()==_this.attr("placeholder")){

            _this.siblings("label").show();

        }

    }

}

$(function(){

placeholder._add($("input[type='text']"));

placeholder._add($("input[type='textarea']"));

})

</script>

</html>