IE8不支持html5 placeholder的解决方法。

  1. /**
  2. * jQuery EnPlaceholder plug
  3. * version 1.0 2014.07.01戈志刚
  4. * by Frans.Lee <dmon@foxmail.com> http://www.ifrans.cn
  5. */
  6. (function ($) {
  7. $.fn.extend({
  8. "iePlaceholder":function (options) {
  9. options = $.extend({
  10. placeholderColor:'#999',
  11. isUseSpan:true,
  12. onInput:true
  13. }, options);
  14.  
  15. $(this).each(function () {
  16. var _this = this;
  17. var supportPlaceholder = 'placeholder' in document.createElement('input');
  18. if (!supportPlaceholder) {
  19. var defaultValue = $(_this).attr('placeholder');
  20. var defaultColor = $(_this).css('color');
  21. if (options.isUseSpan == false) {
  22. $(_this).focus(function () {
  23. var pattern = new RegExp("^" + defaultValue + "$|^$");
  24. pattern.test($(_this).val()) && $(_this).val('').css('color', defaultColor);
  25. }).blur(function () {
  26. if ($(_this).val() == defaultValue) {
  27. $(_this).css('color', defaultColor);
  28. } else if ($(_this).val().length == 0) {
  29. $(_this).val(defaultValue).css('color', options.placeholderColor)
  30. }
  31. }).trigger('blur');
  32. } else {
  33. var $imitate = $('<span class="wrap-placeholder" style="position:absolute; display:inline-block; overflow:hidden; color:'+options.placeholderColor+'; width:'+$(_this).width()+'px; height:'+$(_this).outerHeight()+'px;">' + (defaultValue==undefined?"":defaultValue) + '</span>');
  34. //hg-add
  35. $(_this).focus(function(){
  36. $imitate.hide();
  37. }).blur(function () {
  38. /^$/.test($(_this).val()) && $imitate.show();
  39. });
  40. $imitate.css({
  41. 'margin-left':$(_this).css('margin-left'),
  42. 'margin-top':$(_this).css('margin-top'),
  43. 'text-align':'left',
  44. 'font-size':$(_this).css('font-size'),
  45. 'font-family':$(_this).css('font-family'),
  46. 'font-weight':$(_this).css('font-weight'),
  47. 'padding-left':parseInt($(_this).css('padding-left')) + 2 + 'px',
  48. 'line-height':_this.nodeName.toLowerCase() == 'textarea' ? $(_this).css('line-weight') : $(_this).outerHeight() + 'px',
  49. 'padding-top':_this.nodeName.toLowerCase() == 'textarea' ? parseInt($(_this).css('padding-top')) + 2 : 0
  50. });
  51. $(_this).before($imitate.click(function () {
  52. $(_this).trigger('focus');
  53. }));
  54.  
  55. $(_this).val().length != 0 && $imitate.hide();
  56.  
  57. if (options.onInput) {
  58. var inputChangeEvent = typeof(_this.oninput) == 'object' ? 'input' : 'propertychange';
  59. $(_this).bind(inputChangeEvent, function () {
  60. $imitate[0].style.display = $(_this).val().length != 0 ? 'none' : 'inline-block';
  61. });
  62. } else {
  63. $(_this).focus(function () {
  64. $imitate.hide();
  65. }).blur(function () {
  66. /^$/.test($(_this).val()) && $imitate.show();
  67. });
  68. }
  69. }
  70. }
  71. });
  72. return this;
  73. }
  74. });
  75. })(jQuery);
  76.  
  77. /*调用方式: textarea需要田间onInput=false属性*/
  78. $('input[placeholder], textarea[placeholder]').each(function(){$(this).is('input')?$(this).iePlaceholder():$(this).iePlaceholder({onInput: false});});
  79.  
  80. $(document).ready(function(){
  81. if (typeof (Worker) == "undefined"){
  82. $('input[placeholder], textarea[placeholder]').each(function(){$(this).is('input')?$(this).iePlaceholder():$(this).iePlaceholder({onInput: false});});
  83. }
  84.  
  85. });

  测试html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <!--便于页面更好的在移动平台上展示。
  6. <meta name="viewport" content="initial-scale=1.0,user-scalable=no">
  7. -->
  8. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  9. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  10. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  11. <meta http-equiv="Content-Language" content="utf-8" />
  12. <meta name="author" content="Gezhigang" />
  13. <title>placeholder</title>
  14.  
  15. <script type="text/javascript" src="jquery-1.10.2.min.js"></script>
  16. <script type="text/javascript" src="placeholder.js"></script>
  17.  
  18. </head>
  19. <body>
  20. <div style="margin-left: 30%;margin-top: 10%;">
  21. <form>
  22. <table>
  23. <tr>
  24. <td height="30px">用户名</td>
  25. <td><input type="text" placeholder="这里输入帐号。。。"/></td>
  26. </tr>
  27. <tr >
  28. <td height="30px">密码</td>
  29. <td><input type="text" placeholder="这里输入密码。。。"/></td>
  30. </tr>
  31. <tr>
  32. <td>&nbsp;</td>
  33. <td><input type="submit" value="会员登录" /></td>
  34. </tr>
  35. </table>
  36. </form>
  37. </div>
  38. </body>
  39. </html>

  测试例子

IE8 不支持html5 placeholder的解决方案的更多相关文章

  1. 如何让低版本的IE浏览器(IE6/IE7/IE8)支持HTML5 header等新标签

    html5提供的一些新标签(article,aside,dialog,footer,header,section,footer,nav,figure,menu)使用起来非常的方便,但是低版本的IE浏览 ...

  2. IE(IE6/IE7/IE8)支持HTML5标签

    让IE(ie6/ie7/ie8)支持HTML5元素,我们需要在HTML头部添加以下JavaScript,这是一个简单的document.createElement声明,利用条件注释针对IE来调用这个j ...

  3. IE(IE6/IE7/IE8)支持HTML5标签--20150216

    让IE(ie6/ie7/ie8)支持HTML5元素,我们需要在HTML头部添加以下JavaScript,这是一个简单的document.createElement声明,利用条件注释针对IE来调用这个j ...

  4. ie8及ie8以下支持html5 video标签

    html5media是一个很给力的JavaScript类库,它不依赖于任何JavaScript框架.使用了html5media之后,当浏览器不支持HTML5时,它将会自动切换成Flash模式的Flow ...

  5. js解决IE8不支持html5,css3的问题(respond.js 的使用注意)

    IE8.0及以下不支持html5,css3的解析.目前为止IE8以下的版本使用率在10%左右,网站还是有必要兼容的. 1,在你的所有css最后判断引入两个js文件. html5.js  是用来让ie8 ...

  6. 解决IE8不支持html5标签最好解决办法?

    完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法:HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显 ...

  7. 让 IE 支持HTML5 placeholder

    HTML5 新增的placeholder属性已经得到现代浏览器的支持,旨在提供简单的API可以为文本输入框设置 描述输入字段预期值的提示信息(hint). 这是W3C在标准化的过程中对用户体验的更多考 ...

  8. ie8如何支持html5

    两种方法 : 一:Coding JavaScript <!--[if lt IE9]> <script>    (function() {     if (!      /*@ ...

  9. 让IE6/IE7/IE8支持HTML5标签的js代码

    让IE(ie6/ie7/ie8)支持HTML5元素,我们需要在HTML头部添加以下JavaScript,这是一个简单的document.createElement声明,利用条件注释针对IE来调用这个j ...

随机推荐

  1. Mysql-函数coalesce-查询为空设置默认值

    coalesce(字段,默认值) select coalesce(title,'liu') from a

  2. sql-char和varchar,nvarchar的区别

    数据类型的比较 char表示的是固定长度,最长n个字 varchar表示的是实际长度的数据类型 比如:如果是char类型,当你输入字符小于长度时,后补空格:而是varchar类型时,则表示你输入字符的 ...

  3. struts2面试题汇总

    一.工作原理 一个请求在Struts2框架中的处理大概分为以下几个步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Filter)(这些过滤器 ...

  4. 使用X-UA-Compatible来设置IE浏览器兼容模式

    文件兼容性用于定义让IE如何编译你的网页.此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式. 前言 为了帮助确保你的网页在所有未来的IE版本都有一致的外观,IE ...

  5. .net 时间戳互相转换(精确到毫秒)

    这里记录一个时间戳的互相转换方法,网上都找了,基本都没有精确到毫秒,我的这个基本可以满足精确到毫秒的级别,代码如下: /// <summary> /// Unix时间戳转换为DateTim ...

  6. POJ1979 Red and Black

    速刷一道DFS Description There is a rectangular room, covered with square tiles. Each tile is colored eit ...

  7. MySQL的表分区详解

    这篇文章主要介绍了MySQL的表分区,例如什么是表分区.为什么要对表进行分区.表分区的4种类型详解等,需要的朋友可以参考下 一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysq ...

  8. [Angularjs]视图和路由(二)

    写在前面 上篇文章主要介绍了视图和路由的基本概念,并在文章最后举了一个简单的使用案例.这篇文章将继续学习路由的配置,及相关参数的说明. 系列文章 [Angularjs]ng-select和ng-opt ...

  9. static 类也可以有static构造函数

    public static class A { static A() { } } static构造函数不能是public,也不可能被主动调用,所以public没有意义

  10. 修改了n次效率还是不可接受