解决IE中placeholder的兼容问题

  定义和用法

    placeholder 属性提供可描述输入字段预期值的提示信息(hint)。

    该提示会在输入字段为空时显示,并会在字段获得焦点时消失。

    注释:placeholder 属性适用于以下的 <input> 类型:text, search, url, telephone, email 以及 password

  问题

    由于placeholder 属性是 HTML5 中的新属性,所以IE10以下不支持该属性,有问题就会有解决办法,我的方法就是,利用label和input组合,去模拟实现placeholder属性带来的效果,具体步骤如下:

    HTML代码:

<!--搜索框-->
<div class="texts">
  <input type="text"/><label for="text">毛巾 暖冬装备</label>
</div>
        

     CSS代码:

.texts{
    position:relative;
}
.texts>input{
    width:238px;
    height:26px;
    line-height: 26px;
    border:1px solid black;
        /*输入文字时会与框头有间距*/
    padding-left: 10px;
}
.texts>label{
    position:absolute;
    left:10px;
    top:5px;
    font-size:15px;
    color:#b0b0b0;
    cursor:text;
}    

     JS代码:

var oTexts=document.getElementsByTagName("input")[0];
var oLabel=oSearch.getElementsByTagName("label")[0];
/*文本框失去焦点时,此时若框内无值,则让框内提示文字(也就是label)显示,若框内有值,则隐藏提示文字*/
oTexts.οnblur=function(){
    if(this.value==""){
        oLabel.style.display="block";
    }else{
        oLabel.style.display="none";
    }
    
};
//文本框获得焦点时,让提示文字(也就是label)隐藏
oTexts.οnfοcus=function(){
    oLabel.style.display="none";
};
//点击提示文字时(也就是label),就让文本框获得焦点并且隐藏自己
oLabel.οnclick=function(){
    oLabel.style.display="none";
    oTexts.focus();
};

    原理简单而又巧妙,其实就是用一个标签去代替placeholder文本,用一个div包裹文本标签和label标签(也可以是别的标签),让他们分别相对于父级定位,做出placeholder实现的效果,接着就是JS的活儿了,我们要去分析在文本框获得焦点、失去焦点这些过程中,都出现了哪些动效,再将这些逻辑语言化为JS语言,其实不同的需求下,JS代码也会有所不同,只要掌握了原理,配到不同的需求,大家可以做出相应改变。

转载于:https://www.cnblogs.com/libijun96/p/8331397.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值