placeholder是html5新增的一个属性,极大的减轻了表单提示功能的实现,但是对于IE6-IE9真的是只能靠自己写啦!

但是在自己写时会掉进了一个坑里,还好用了一会时间还是爬出来啦。

最终的解决方法方法如下:

 <form name="doluform" id="loginform">
<div class="inputdivin">
<input type="text" placeholder="用户名" name="usernamez" value=""/>
<p class="tipsdiv"><span id="logintipsp"></span></p>
</div>
<div class="inputdivin">
<input type="password" placeholder="密码" name="passwordz" value=""/>
<span style="display:none" class="placespan"></span>
<p class="tipsdiv"><span id="loginposswordtipsp"></span></p>
</div>
<div class="inputivin">
<p id="jhemail"></p>
</div>
<div class="inputdivin">
<button type="submit" title="点击登录" class="submitbtn">登&nbsp;录</button>
</div>
<div class="inputdivin">
<p class="passwordbc"><a href="javascript:void(0);" class="passwordaction" id="holdpassword"><b class="test"></b>&nbsp;&nbsp;记住密码<input type="hidden" name="remfor_input" value="1"/></a></p>
<p class="findpassword"><a href="${ctx}/home/index/findpassword_step1.jsp" class="passwordaction">忘记密码</a></p>
</div>
</form>

而对应的js组件写法如下:

 var Inputplace=function(){
this.obj=null;
this.type="";
this.color="";
this.tipspan=null;
}
Inputplace.prototype.init=function(obj,opt){
var This=this;
this.obj=obj;
this.setting={
"defaultz":obj.attr("placeholder"),
"tccolor":"#6d696a"
}
$.extend(this.setting,opt);
this.oldcolor=obj.css("color");
this.type=obj.attr("type");
if(this.type=="text"){//文本input设置
this.obj.val(this.setting.defaultz).css("color",this.setting.tccolor);
this.obj.unbind("focus");
this.obj.focus(function(){
if(This.obj.val()==This.setting.defaultz){
This.obj.val("").css("color",This.oldcolor);
}
})
this.obj.unbind("blur");
this.obj.blur(function(){
if(This.obj.val()=="" || /^\s*$/.test(This.obj.val())){
This.obj.val(This.setting.defaultz).css("color",This.setting.tccolor);
}
})
}
else if(this.type=="password"){//密码input实现
this.tipspan=this.obj.next("span.placespan");
this.tipspan.show().html(this.setting.defaultz).css({"color":this.setting.tccolor});
this.obj.unbind("focus");
this.obj.focus(function(){
This.tipspan.hide();
})
this.tipspan.unbind("click");
this.tipspan.click(function(){
$(this).hide();
This.obj.focus();
})
this.obj.unbind("blur");
this.obj.blur(function(){
if(This.obj.val()=="" || /^\s$/.test(This.obj.val())){
This.tipspan.show();
}
})
}
}

而调用方法如下:

 <!--[if lte IE 9 ]>
<script type="text/javascript" src="${ctx}/static/js/common/jsplaceholder.js"></script>
<script type="text/javascript">
$(function(){
var inputtext=$("input:text");
inputtext.each(function(){
new Inputplace().init($(this))
})
var inputpass=$("input:password");
inputpass.each(function(){
new Inputplace().init($(this))
})
})
</script>
<![endif]-->

其中主要的坑就是在于input的类型上,当input为password的时候,如果你还只是直接设置val来做提示,那你就已经掉坑里啦,因为在password 会把输入的内容成..的形式,所以得绕一下,如果是password的话可以在password的那一组里新增一个元素去显示要提示的内容,像其中<span style="display:none" class="placespan"></span>就是专门用来做提示用的,在CSS里要先写好提示所用到的一干样式,样式为tipsdiv的P元素是用来放验证提示内容的,这里不用管,当表单获得焦点的时候或者span被点击的时候span都会消失,而input开始可以输入内容啦。

<div class="inputdivin">
<input type="password" placeholder="密码" name="registerpassword" value=""/>
<span style="display:none" class="placespan"></span>
<p class="tipsdiv"><span id="registerpasswordtipsid"></span></p>
</div>

注:就在html5的placeholder能用的情况下,在各浏览器下也会有一些差异,在ff和chrome下,输入框获得焦点时,placeholder文字没有变化,只有当输入框中输入了内容时,placeholder文字才消失;而在safari和ie10-ie11下,当输入框获得焦点时,placeholder文字便立即消失。

默认情况下,placeholder的文字是灰色,输入的文字是黑色。而我们拿到的设计稿上的色值往往并不与默认情况下完全一致。那么,如何修改placeholder的色值呢?

如果直接写input{color:red;},可以看到,ie10和ff下,placeholder文字和输入文字都变成了红色.

而在chrome和safari下,placeholder文字颜色不变,只有输入的文字变成红色。

显然,这种做法是行不通的。因为我们只想改变placeholder文字的颜色,并不想改变输入文字的颜色。
正确的写法如下:
    ::-moz-placeholder{color:red;}              //ff
    ::-webkit-input-placeholder{color:red;}     //chrome,safari
    :-ms-input-placeholder{color:red;}          //ie10

placeholder的兼容处理方法的更多相关文章

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

    对于密码输入框placeholder的兼容问题:HTML代码:<input type="password" id="loginPassword" plac ...

  2. IE6-7下margin-bottom不兼容解决方法(非原创,视频中看到的)

    在IE低版本下有很多不兼容,现在将看到的   IE6-7下margin-bottom不兼容解决方法   演示一下,方便日后自己查阅. <!DOCTYPE html> <html la ...

  3. 兼容ie浏览器的placeholder的几种方法

    项目中遇到的问题,试了几种方法,今天整理出来,如果有不合适的地方,希望大家多多提意见. 第一种方法是:使用html新增的属性 “data-”来实现的,实现的时候,input框没有使用placehole ...

  4. (转)html5 Placeholder属性兼容IE6、7方法

    使低版本浏览器支持Placeholder有很多方法,都不是很完美,或多或少有点问题,且有些原生支持的浏览器在获得焦点时会清空Placeholder提示.发现zhihu的解决方法不错,特记录下 wind ...

  5. ie9 placeholder兼容代码方法

    function guid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r ...

  6. placeholder解决兼容各种IE浏览器的方法

    <input id="search" type="text" class="box" class="inputText&qu ...

  7. placeholder的兼容处理(jQuery下)

    这是一个老问题,结合前辈们的经验,需要处理的问题有一下几个. 1.只有输入框(input/textarea)下的palaceholder属性存在的时候才需要处理这类兼容 2.处理好输入框上焦点和是焦点 ...

  8. placeholder属性兼容ie8

    <!doctype html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. html5 placeholder属性兼容ie11

    placeholder 属性是html5的属性,用于提供描述输入字段预期值的提示信息(hint). 简单例子: <!DOCTYPE HTML> <html> <body& ...

随机推荐

  1. POJ2387(最短路入门)

    Til the Cows Come Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 38556   Accepted ...

  2. UGUI笔记

    Text中的可以单独指定某些文字的颜色,只需将想要变色的文本放在<color=**></color>之间即可,如“吃<color=#ff7a38>橙色物品</ ...

  3. Coreseek 安装问题

    Ubuntu下安装coreseek mmseg出现了cannot find input file: src/Makefile.in 解决方法如下 >autoheader >automake ...

  4. CQL查Cassandra条目数中的小问题

    用查询语句:SELECT count(*) FROM tablename 返回类型是ResultSet,得到tablename中所有条目数 ResultSet类型可以直接用index访问:Result ...

  5. Jsoncpp写“鱘”的json数据,报错。

    最近在用Json::FastWriter生成json数据时,发现一个问题.含有“鱘”字的json字段会多出一个斜杠,不知道是不是编码的问题. C++要使用JSON来解析数据,一般采用jsoncpp. ...

  6. php 生成图片,只获取字节数据,不以图片格式输出

    提示:与直接将结果输出到浏览器的任何内容一样,可以使用输出控制函数(http://www.php.net/./en/ref.outcontrol.php)捕获此函数的输出,并将其保存在字符串(例如)中 ...

  7. AGC001 F - Wide Swap【线段树+堆+拓扑排序】

    给出的模型很难搞,所以转换一下,记p[i]为i这个数的位置,然后相邻两个p值差>k的能交换,发现使原问题字典序最小也需要使这里的字典序最小 注意到p值差<=k的前后顺序一定不変,那么可以n ...

  8. openinstall的免费服务对App推广有哪些帮助?

    想在微信中下载 App,需要“点击右上角打开浏览器”,太麻烦: 想深入查看微信分享内容,需要手动打开 App 搜索,不方便: 想给 App 做推广,Android 需要多个渠道人工打包,效率低: .. ...

  9. git常用命令和linux下安装git教程

    Debian/Ubuntu下使用apt-get安装git #安装libz-dev libssl-dev $ apt-get install libcurl4-gnutls-dev libexpat1- ...

  10. LeetCode.908-最小差值 1(Smallest Range I)

    这是悦乐书的第348次更新,第372篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第213题(顺位题号是908).给定一个整数数组A,对于每个整数A[i],我们可以选择任 ...