解决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.onblur=function(){
    if(this.value==""){
        oLabel.style.display="block";
    }else{
        oLabel.style.display="none";
    }

};
//文本框获得焦点时,让提示文字(也就是label)隐藏
oTexts.onfocus=function(){
    oLabel.style.display="none";
};
//点击提示文字时(也就是label),就让文本框获得焦点并且隐藏自己
oLabel.onclick=function(){
    oLabel.style.display="none";
    oTexts.focus();
};

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

原文地址:https://www.cnblogs.com/libijun96/p/8331397.html

时间: 2024-10-13 05:20:41

解决IE中placeholder的兼容问题的相关文章

解决HTML5中placeholder属性兼容性的JQuery插件

//调用方法 $(function () {   $(".pHolder").jason(); }); //HTML代码 <input type="text" class="pHolder" placeholder="请输入姓名" /> //jquery插件 ($.fn.jason = function(a) {    var b = {        focus: "black",      

placeholder 解决UITextField中placeholder和text文本同时显示的问题

TextField都使用了placeholder属性,但在代码中又设置了text属性,因此ViewController会同时显示placeholder文本和text文本. 这个问题让我彻底崩溃.按道理说当text中的文本长度为0时placeholder文本显示,text文本长度不为0时placeholder应该隐藏才对? 而且正常情况下我也没有遇到过这个问题.后来我新建项目,进行多次尝试都不能复现这个问题. 虽然问题导致的原因至今没有找到.但google工作成果也不是一点没有.Stackover

解决Eclips中使用V7兼容包的主题报错的问题

新建项目默认会使用v7包中的主题,如果你workplace中没有v7库,那是一定会报错的. 1.导入v7jar,没用,因为需要的是v7的资源文件 2.既然如此,导入v7的整个项目应该ok了吧,import之后,尼玛还报错,百思不得骑姐,删了导,导了删,把SDK都弄坏了还是报错.并且build path还不报错. 终极大招,原来原因是因为v7库和项目没有在一个盘符下,import的时候,注意要勾选copy projects into workplace,也就是把依赖库从sdk复制一份到当前的wor

ie中placeholder属性不支持,js解决

ie中placeholder属性不支持,js的解决方法: //placeholder属性在ie下兼容 function placeholder ( pEle , con ) { var pEle = pEle if( pEle.find("input,textarea").val() == "" ){ pEle.append("<i class='placeholder_ie'>"+con+"</i>"

placeholder不兼容 IE10 以下版本的解决方法

对于密码输入框placeholder的兼容问题: HTML代码: <input type="password" id="loginPassword" placeholder="密码(6-16位字母数字)" class="width270"> <input type="text" passwordMask="true" placeholder="密码(6-16位

Windows8 解决VMware与Hyper-V不兼容共存方法

Windows8 解决VMware与Hyper-V不兼容共存方法 | 浏览:942 | 更新:2013-09-16 14:04 | 标签: windows8 1 2 3 4 5 6 7分步阅读 今天无意中 在电脑安装了一个Hyper-V功能装完后重启电脑发现打开VMware居然出错然后百度一下说不共享于是找到个方法 但都不人性化 现在写这遍希望能让大家看得懂 方法/步骤 1 首先win+X 2 命令提示符(管理员) 3 键入:bcdedit /copy {default} /d "Windows

java压缩去除html空格和换行解决微信域名下不兼容

直接贴代码. java压缩去除html空格和换行解决微信域名下不兼容 调用:content = HtmlCompressor.compress(content); import java.io.StringReader;import java.io.StringWriter;import java.util.*;import java.util.regex.*; /******************************************* * 压缩jsp,html中的代码,去掉所有空

解决jQuery中dbclick事件触发两次click事件

首先感谢这位小哥!http://qubernet.blog.163.com/blog/static/1779472842011101505853216/ 太长姿势了. 在jQuery事件绑定中,dbclick可以触发两次click事件.例如一个DOM元素div,既绑定了 click 事件,又绑定了 dblclick 事件,这两个事件分别要做独立的事情.事件处理上没有冲突,都可以各自完成各自的操作.双击的时候虽然是执行了 dblclick 事件,但是在这之前,也执行了click 事件,那么,如何来

解决Android中fragment_main.xml文件中的组件获取的问题

package com.dhy.phonedial; import android.app.Activity; import android.app.Fragment; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.Me