placeholder的兼容处理方法

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

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

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

 1 <form name="doluform" id="loginform">
 2     <div class="inputdivin">
 3         <input type="text" placeholder="用户名" name="usernamez" value=""/>
 4         <p class="tipsdiv"><span id="logintipsp"></span></p>
 5     </div>
 6     <div class="inputdivin">
 7         <input type="password" placeholder="密码" name="passwordz" value=""/>
 8         <span style="display:none" class="placespan"></span>
 9         <p class="tipsdiv"><span id="loginposswordtipsp"></span></p>
10     </div>
11     <div class="inputivin">
12         <p id="jhemail"></p>
13     </div>
14     <div class="inputdivin">
15         <button type="submit" title="点击登录" class="submitbtn">登&nbsp;录</button>
16     </div>
17     <div class="inputdivin">
18         <p class="passwordbc"><a href="javascript:void(0);" class="passwordaction" id="holdpassword"><b class="test">&#xe602;</b>&nbsp;&nbsp;记住密码<input type="hidden" name="remfor_input" value="1"/></a></p>
19         <p class="findpassword"><a href="${ctx}/home/index/findpassword_step1.jsp" class="passwordaction">忘记密码</a></p>
20     </div>
21 </form>
View Code

 

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

 1 var Inputplace=function(){
 2     this.obj=null;
 3     this.type="";
 4     this.color="";
 5     this.tipspan=null;
 6 }
 7 Inputplace.prototype.init=function(obj,opt){
 8     var This=this;
 9     this.obj=obj;
10     this.setting={
11         "defaultz":obj.attr("placeholder"),
12         "tccolor":"#6d696a"
13     }
14     $.extend(this.setting,opt);
15     this.oldcolor=obj.css("color");
16     this.type=obj.attr("type");
17     if(this.type=="text"){//文本input设置
18         this.obj.val(this.setting.defaultz).css("color",this.setting.tccolor);
19         this.obj.unbind("focus");
20         this.obj.focus(function(){
21             if(This.obj.val()==This.setting.defaultz){
22                 This.obj.val("").css("color",This.oldcolor);
23             }
24         })
25         this.obj.unbind("blur");
26         this.obj.blur(function(){
27             if(This.obj.val()=="" || /^\s*$/.test(This.obj.val())){
28                 This.obj.val(This.setting.defaultz).css("color",This.setting.tccolor);
29             }
30         })
31     }
32     else if(this.type=="password"){//密码input实现
33         this.tipspan=this.obj.next("span.placespan");
34         this.tipspan.show().html(this.setting.defaultz).css({"color":this.setting.tccolor});
35         this.obj.unbind("focus");
36         this.obj.focus(function(){
37             This.tipspan.hide();
38         })
39         this.tipspan.unbind("click");
40         this.tipspan.click(function(){
41             $(this).hide();
42             This.obj.focus();
43         })
44         this.obj.unbind("blur");
45         this.obj.blur(function(){
46             if(This.obj.val()=="" || /^\s$/.test(This.obj.val())){
47                 This.tipspan.show();
48             }
49         })
50     }
51 }
View Code

而调用方法如下:

 1 <!--[if lte IE 9 ]>
 2 <script type="text/javascript" src="${ctx}/static/js/common/jsplaceholder.js"></script>
 3 <script type="text/javascript">
 4     $(function(){
 5         var inputtext=$("input:text");
 6         inputtext.each(function(){
 7             new Inputplace().init($(this))
 8         })
 9         var inputpass=$("input:password");
10         inputpass.each(function(){
11             new Inputplace().init($(this))
12         })
13     })
14 </script>
15 <![endif]-->
View Code

其中主要的坑就是在于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

转载于:https://www.cnblogs.com/xwwin/p/4233338.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247512.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运行Xcode时出现 Lazy loading NSBundle MobileCoreServices.framework和 Loaded MobileCoreServices.framework

运行Xcode时出现 Lazy loading NSBundle MobileCoreServices.framework和 Loaded MobileCoreServices.framework 解决方案&#xff1a; 1、打开项目的 Product-->Scheme --> Edit Scheme--> Run-->Arguments-->Environment Variables添加Name为OS_ACTIVITY_MO…

详解 vue-cli 的打包配置文件代码(转)

一、前言 对于webpack基础不好&#xff0c;node指令不通的童鞋。估计对自己搭建Vue、react脚手架是相当头疼的&#xff0c;有种无从下手的感觉。然而&#xff0c;从头看这2块&#xff0c;耗时太长&#xff0c;而且说实话得练才行&#xff0c;不练练手看不明白。那大多数人就采取…

iOS之页面布局-踩坑的原由

iOS之页面布局 原文请点击 在《iOS 7 UI Transition Guide》中有在《iOS 7 UI Transition Guide》的Bar and Bar Buttons一节中有这么一段话 In iOS 7, the status bar is transparent, and other bars—that is, navigation bars, tab bars, toolbars, search bars, and sco…

工作中的javascript代码收集及整理

有个pub库放在blog的文件夹里面了,注意查查1.用javascript去除字符串左右空格,包括全角和半角//用javascript去除字符串左右空格,包括全角和半角String.prototype.trim function() { //其中表示为&#xff1a;对象.属性.方法函数方法var strTrim this.replace(/(^\s*)|(\s*$)/…

iOS11 更改状态栏、导航栏颜色的方法

ios上状态栏 就是指的最上面的20像素高的部分 状态栏分前后两部分&#xff0c;要分清这两个概念&#xff0c;后面会用到&#xff1a; 前景部分&#xff1a;就是指的显示电池、时间等部分&#xff1b; 背景部分&#xff1a;就是显示黑色或者图片的背景部分&#xff1b; (一)设…

i春秋DMZ大型靶场实验(四)Hash基础

下载工具包 打开目标机 通过目录爆破发现 phpmyadmin 在登录位置尝试注入 返现 可以注入 直接上sqlmap 上 bp 代理抓包 sqlmap.py -r bp.txt --dbs 利用sqlmap 跑出root 密码 root666888 登录 phpmyadmin t通过路径报错得到绝对路径 c:\\www\\1.php root 权限…

ASP.NET中进行消息处理(MSMQ) 二

在我上一篇文章《ASP.NET中进行消息处理(MSMQ)一》里对MSMQ做了个通俗的介绍&#xff0c;最后以发送普通文本消息和复杂的对象消息为例介绍了消息队列的使用。 本文在此基础上继续介绍MSMQ的相关知识点&#xff0c;最后还是通过一个示例程序来分析MSMQ在实际项目开发中的应用。…

GoJs Pictures 官方介绍文档

图片 使用Picture类显示图像。 最常见的用法是使用URL字符串设置Picture.source属性&#xff0c;以及通过GraphObject.desiredSize&#xff08;图对象的所需尺寸&#xff09;获取或通过设置GraphObject.width&#xff08;图对象的宽&#xff09;和GraphObject.height&#xff0…

怎样购买及安装ssl安全证书

查找资料记录&#xff0c;不是我的项目笔记 现在越来越多的网站都开始用安全链接了&#xff0c;在国外的话&#xff0c;如果不是一个安全链接&#xff0c;用户很大程度上会拒绝使用&#xff0c;所有安全链接是未来的趋势&#xff0c;楼主第一次配安全证书的时候&#xff0c;刚刚…

(转载)Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!

转载自 Git使用教程 预警&#xff1a;因为详细&#xff0c;所以行文有些长&#xff0c;新手边看边操作效果出乎你的预料&#xff09;一&#xff1a;Git是什么&#xff1f; Git是目前世界上最先进的分布式版本控制系统。 工作原理 / 流程&#xff1a; Workspace&#xff1a;工作…

soureTree中如何设置git 用户名与密码 SourceTree提交修改用户详细图文方法

mac上软件更新&#xff1a; 现在没有网络小模块了&#xff0c;在同行右边高级里面有默认用户名删除即可&#xff01;&#xff01;&#xff01;&#xff01; sourceTree 切换Git登录用户&#xff0c;之前在SourceTree提交远程服务用的是同事的账号&#xff0c;同事离职后账号也…

box-sizing的使用

box-sizing 人们慢慢的意识到传统的盒子模型不直接&#xff0c;所以他们新增了一个叫做 box-sizing 的CSS属性。当你设置一个元素为 box-sizing: border-box; 时&#xff0c;此元素的内边距和边框不再会增加它的宽度。这里有一个与前一页相同的例子&#xff0c;唯一的区别是两…

更新node最新版本方法和 npm install -g n 运行错误

使用xshell连接linux服务器后&#xff0c;首先输入node -v查看当前使用的版本 如果上面查看的版本比较低&#xff0c;则可以开始升级 清除npm cache 升级之前还需要安装n模块&#xff0c;n模块是专门用来管理nodejs的版本 输入npm install -g n n模块安装完成之后&#x…

Atom React或前端插件推荐

分享一些Atom个人在用的插件,喜欢请点赞 1. color-picker 取色工具 2. pigments 编辑器中直接查看代码所代表的颜色&#xff0c;工具虽小但是很实用。 3. minimap 仿sublime text的缩略代码查看&#xff0c;想找的地方一目了然。 4. highlight-selected 选择某段代码自动高…

Tapable.plugin is deprecated. Use new API on `.hooks` instead

问题描述 在使用extract-text-webpack-plugin给webpack打包时出现报错 Tapable.plugin is deprecated. Use new API on .hooks instead 1 问题原因 extract-text-webpack-plugin目前版本不支持webpack4。 解决方案 使用extract-text-webpack-plugin的最新的beta版 npm inst…

多重表(广义表)

在深入浅出数据结构系列前面的文章中&#xff0c;我们一直在讨论“线性表”&#xff0c;其形式如下&#xff1a; 由a1,a2,a3,……a(n-1)个元素组成的序列&#xff0c;其中每一个元素ai(0<i<n)都是一个“原子”&#xff0c;“原子”的意思就是说元素本身是一个个体&#x…

简单教你React父子组件间平级组件间传值

国庆充电特辑&#xff1a; 堵车堵死&#xff0c;废话不多说直接上菜。 1.父组件对子组件传值 利用props属性传值 class Component extends React.Component {constructor (props) {super(props);}render() {return (<div><h1>I am {this.props.name}</h1>…

Requests库的主要方法:requests.request为requests.get和requests.post两个的汇总,只是需要传方法...

1. requests.request(method,url,**kwargs&#xff09; method&#xff1a;请求方式&#xff0c;对应get/put/post等七种&#xff1a;拟获取页面的url链接&#xff1a;控制访问参数&#xff0c;共13个method&#xff1a;请求方式rrequests.request(GET,url,**kwargs) r reques…

jQuery插件开发教程

jQuery插件开发精品教程&#xff0c;让你的jQuery提升一个台阶 要说jQuery 最成功的地方&#xff0c;我认为是它的可扩展性吸引了众多开发者为其开发插件&#xff0c;从而建立起了一个生态系统。这好比大公司们争相做平台一样&#xff0c;得平台者得天下。苹果&#xff0c;微软…

微服务深入浅出(7)-- 网关路由Zuul

Zuul用于构建边界服务&#xff0c;致力于动态路由&#xff0c;过滤&#xff0c;监控&#xff0c;弹性伸缩和安全等方向。 1、ZuulRibbonEureka结合&#xff0c;可以实现智能路由和负载均衡 2、网关将所有服务的API接口统一聚合统一暴露 3、网关统一爆率接口后&#xff0c;可以做…