Html5的placeholder属性(IE兼容)实现代码


Posted in Javascript onAugust 30, 2014

HTML5对Web Form做了许多增强,比如input新增的type类型、Form Validation等。

Placeholder是HTML5新增的另一个属性,当input或者textarea设置了该属性后,该值的内容将作为灰字提示显示在文本框中,当文本框获得焦点时,提示文字消失。以前要实现这效果都是用JavaScript来控制才能实现 , firefox、google chrome等表示对其支持 , 唯独IE存在违和感啊!

例如: <input id="t1" type="text" placeholder="请输入文字" />

介绍一个超强的让IE下支持placeholder的属性插件,同时也兼容其他不支持placeholder的浏览器,代码如下:

$(document).ready(function(){ 
 var doc=document,
 inputs=doc.getElementsByTagName('input'),
 supportPlaceholder='placeholder'in doc.createElement('input'),
 
 placeholder=function(input){
  var text=input.getAttribute('placeholder'),
  defaultValue=input.defaultValue;
  if(defaultValue==''){
  input.value=text
  }
  input.onfocus=function(){
  if(input.value===text)
  {
   this.value=''
  }
  };
  input.onblur=function(){
  if(input.value===''){
   this.value=text
  }
  }
 };
 
 if(!supportPlaceholder){
  for(var i=0,len=inputs.length;i<len;i++){
   var input=inputs[i],
   text=input.getAttribute('placeholder');
   if(input.type==='text'&&text){
    placeholder(input)
   }
  }
 }
 });

直接把代码复制下来,保存成一个js文件引用即可,不用再做任何处理,超级便利!

ex : 这样做的确能让IE的Input显示placeholder属性,但是如果页面上只有一个input还好,如果是多个input,如果出现input没有填入任何值的话,那么它的空input会自动将placeholder的值填进value里面,从而发生错误.例如:

<input type="text" placeholder="输入商品编码" name="goodscode" id="goodscode" value="123" />
<input type="text" placeholder="输入商品名称" name="goodsname" id="goodsname" value="输入商品名称" />

解决办法就是在后台自己判断啦 , 也许能在上面的js文件里解决 , 以后再研究啦~!

Javascript 相关文章推荐
在JavaScript的jQuery库中操作AJAX的方法讲解
Aug 15 Javascript
js中最容易被忽视的事件问题大总结
May 15 Javascript
ReactJs快速入门教程(精华版)
Nov 28 Javascript
vue.js绑定class和style样式(6)
Dec 09 Javascript
jquery+html仿翻页相册功能
Dec 20 Javascript
Angular的MVC和作用域
Dec 26 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
Aug 18 Javascript
vue 计时器组件的实现代码
Sep 14 Javascript
jQuery实现html双向绑定功能示例
Oct 09 jQuery
重学 JS:为啥 await 不能用在 forEach 中详解
Apr 15 Javascript
express + jwt + postMan验证实现持久化登录
Jun 05 Javascript
Vue SPA 初次进入加载动画实现代码
Nov 14 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
Aug 30 #Javascript
原生js仿jq判断当前浏览器是否为ie,精确到ie6~8
Aug 30 #Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
Aug 30 #Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
Aug 30 #Javascript
仿百度联盟对联广告实现代码
Aug 30 #Javascript
jQuery针对各类元素操作基础教程
Aug 29 #Javascript
jQuery事件用法实例汇总
Aug 29 #Javascript
You might like
PHP基于curl后台远程登录正方教务系统的方法
2016/10/14 PHP
浅谈PHP中try{}catch{}的使用方法
2016/12/09 PHP
js 覆盖和重载 函数
2009/09/25 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
JSONP之我见
2015/03/24 Javascript
js小数运算出现多位小数如何解决
2015/10/08 Javascript
jQuery实现图片预加载效果
2015/11/27 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
JavaScript里 ==与===区别详解
2016/08/16 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
2019/05/16 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
vue props default Array或是Object的正确写法说明
2020/07/30 Javascript
[48:23]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第一局
2016/03/05 DOTA
Python使用random和tertools模块解一些经典概率问题
2015/01/28 Python
Python本地与全局命名空间用法实例
2015/06/16 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
2018/09/03 Python
Python设计模式之抽象工厂模式原理与用法详解
2019/01/15 Python
django2笔记之路由path语法的实现
2019/07/17 Python
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
Paul Smith英国官网:英国国宝级时装品牌
2019/03/21 全球购物
群众路线剖析材料
2014/02/02 职场文书
优秀应届毕业生推荐信
2014/02/18 职场文书
大学生社团活动总结
2014/04/26 职场文书
团支书竞选演讲稿
2014/04/28 职场文书
工程负责人任命书
2014/06/06 职场文书
宾馆客房管理制度
2015/08/06 职场文书
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python