placeholder 是 html5 新增加的属性,主要提供一种提示(hint),用于描述输入域所期待的值。该提示会在输入字段为空时显示,并会在字段获得焦点时消失。placeholder 属性适用于以下类型的 input 标签:text, search, url, telephone, email 以及 password。

我们先看下在谷歌浏览器中的效果,如图所示:

获得焦点时:

输入字段:

因为是 html5 属性,自然低版本的浏览器比如 ie6-8 不兼容。下面就介绍下如何在低版本浏览器中显示以上效果,话不多说直接上代码。

html:

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/><meta name="renderer" content="webkit"/><meta name="keywords" content=""/><meta name="description" content=""/><title>基于 jquery 实现 ie 浏览器兼容 placeholder 效果</title><style>*{margin:0;padding:0;}.txt{position:relative;font-size:12px;margin:10px;}.txt input{border:1px solid #ccc;height:30px;line-height:30px;padding:0 10px;width:200px;}.txt .txt-tip{color:#999;position:absolute;left:10px;top:0;height:32px;line-height:34px;}</style>
</head>
<body><div class="txt"><input type="text" value=""/></div>
</body>
</html>
<script src="js/jquery.min.js"></script>
<script src="js/placeholder.js"></script>
<script>
$(function(){var $input = $('.txt input');initPlaceholder($input, '请输入内容', 'txt-tip');
});
</script>

placeholder.js:

function initPlaceholder($input, msg, classname){var isIE = !!window.ActiveXObject || 'ActiveXObject' in window;var isPlaceholder = 'placeholder' in document.createElement('input');if(isPlaceholder && !isIE){$input.attr('placeholder', msg);}else{var $tip = $('<span class="' + classname + '">' + msg + '</span>');$input.after($tip);$.data($input[0], 'tip', $tip);if($input.val() != ''){hidePHTip($input);}dealPHTip($input, $tip);}
}
function hidePHTip($input){var $tip = $.data($input[0], 'tip');if($tip){$tip.hide();}
}
function dealPHTip($input, $tip){var _deal = function(){var val = $input.val();if(val == ''){$tip.show();}else{$tip.hide();}};$tip.click(function(){$input.focus();});$input.on('input propertychange', function(){clearTimeout(timeout);var timeout = setTimeout(_deal, 0);});
}

实现原理:首先过滤下浏览器,非 ie 浏览器并且支持 placeholder 属性就用 placeholder,ie 浏览器则用 span 代替 placeholder 文本内容,通过样式定位在 input 上方,同时监听 input 输入框值的变化来判断显示或隐藏 span。

我们来看下 ie6 浏览器中的效果:

获得焦点时:

输入字段:

可以看到和谷歌浏览器的效果是一致的,唯一不足的就是文字没有居中,可以通过 css 进行修改。

【jquery】基于 jquery 实现 ie 浏览器兼容 placeholder 效果相关推荐

  1. jQuery版本,以及IE浏览器兼容问题

    1.版本 jQuery目前有3个版本,分别是1x.2x.3x: 1x版本目前使用最广泛,支持IE6,7,8:2x,3x版本都不支持IE6,7,8:其中1版本使用最广泛,3版本目前依然在维护中 最终版: ...

  2. jQuery:收集一些基于jQuery框架开发的控件/jquery插件2

    Horizontal accordion: jQuery 基于jQuery开发,非常简单的水平方向折叠控件. 主页:http://letmehaveblog.blogspot.com/2007/10/ ...

  3. jQ进阶篇--jQuery封装placeholder效果,让低版本浏览器支持该效果

    页面中的输入框默认的提示文字一般使用placeholder属性就可以了,即: <input type="text" name="username" pla ...

  4. jquery.placeholder.min.js让你的IE浏览器支持placeholder

    2019独角兽企业重金招聘Python工程师标准>>> jquery.placeholder.min.js让你的IE浏览器支持placeholder http://www.ijque ...

  5. 解决jquery的scrollTop()置顶的浏览器兼容

    2019独角兽企业重金招聘Python工程师标准>>> 对于前端开发者来说,浏览器兼容是经常会遇到的问题,在不同的项目中经常会遇到不同的弹出层操作,比如登录的弹出层,需要在屏幕的中间 ...

  6. 基于jQuery的插件扩展,主要用于识别浏览器内核与外壳的类型和版本

    写了个基于jQuery的插件扩展,主要用于识别浏览器内核与外壳的类型和版本.可识别各种浏览器的内核,并已经支持多种国内主流浏览器.  费话不多说,上我的JavaScript代码:(文件名:jquery ...

  7. ajax无刷新留言板远吗,基于jquery实现ajax无刷新评论

    基于jquery实现ajax无刷新评论 发布于 2017-03-31 11:26:07 | 75 次阅读 | 评论: 0 | 来源: 网友投递 jQuery javascript框架jQuery是一个 ...

  8. 移动端ajax,jQuery基于$.ajax设置移动端click超时处理方法

    本文实例讲述了jQuery基于$.ajax设置移动端click超时处理方法.分享给大家供大家参考,具体如下: 这里介绍jquery click事件如何在移动端自动转换成touchstart事件. 因为 ...

  9. 基于jquery类库的绘制二维码的插件jquery.qrcode.js

     jquery.qrcode.min.js 如下 (function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.d ...

最新文章

  1. Spring-Security-入门(一):登录与退出
  2. php mongo 游标超时,游标在MongoDb游标上超时错误
  3. gsettings命令使用简介
  4. [CSP-S Day1,Day2 游记]提高组考后总结及学习编程C++以来的心得体会
  5. python 正则表达式提取数据_Python爬虫教程-19-数据提取-正则表达式(re)
  6. 前端学习(1306):node.js模块的加载机制
  7. HttpClient调用http接口(POST)
  8. java缓存内存泄漏_java – getMethod是缓存并导致内存泄漏
  9. Class字节码文件结构总结
  10. 你们要的国内会议来了!部分截稿时间临近,入群享快速投稿服务
  11. 总结一下__declspec(dllimport)的作用
  12. 记录:Base64编码步骤详解
  13. 访问者模式---萝卜青菜各有所爱
  14. 接地/漏电(原理图)/接零/零线保护
  15. PHP生成一寸照片代码,ps做一寸证件照的步骤
  16. 无线路由器经常掉线怎么办?
  17. c编程----段定义的使用
  18. Linux-USB学习 -- USB枚举过程
  19. Cousera吴恩达机器学习week5笔记
  20. 从数据孪生发展到元宇宙

热门文章

  1. 判别模型的玻尔兹曼机论文源码解读
  2. 来学习ansibie(1)
  3. [WPF 基础知识系列] —— 绑定中的数据校验Vaildation
  4. day32—CSS多列布局学习
  5. Linq查询datatable的记录集合
  6. No.10 awk、变量、运算符、if多分支
  7. JAVA 文件编译执行与虚拟机(JVM)简单介绍
  8. [Silverlight入门系列]使用MVVM模式(3):Model的INotifyPropertyChanged接口实现
  9. Android UI 色板
  10. 关于Java抽象类,接口与实现接口及派生类继承基类