IE8 不支持html5 placeholder的解决方案

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

/**
 * jQuery EnPlaceholder plug
 * version 1.0                            2014.07.01戈志刚
 * by Frans.Lee <dmon@foxmail.com>  http://www.ifrans.cn
 */
(function ($) {
    $.fn.extend({
        "iePlaceholder":function (options) {
            options = $.extend({
                placeholderColor:'#999',
                isUseSpan:true,
                onInput:true
            }, options);

            $(this).each(function () {
                var _this = this;
                var supportPlaceholder = 'placeholder' in document.createElement('input');
                if (!supportPlaceholder) {
                    var defaultValue = $(_this).attr('placeholder');
                    var defaultColor = $(_this).css('color');
                    if (options.isUseSpan == false) {
                        $(_this).focus(function () {
                            var pattern = new RegExp("^" + defaultValue + "$|^$");
                            pattern.test($(_this).val()) && $(_this).val('').css('color', defaultColor);
                        }).blur(function () {
                                if ($(_this).val() == defaultValue) {
                                    $(_this).css('color', defaultColor);
                                } else if ($(_this).val().length == 0) {
                                    $(_this).val(defaultValue).css('color', options.placeholderColor)
                                }
                            }).trigger('blur');
                    } else {
                        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>');
                        //hg-add
                        $(_this).focus(function(){
                            $imitate.hide();
                        }).blur(function () {
                                    /^$/.test($(_this).val()) && $imitate.show();
                                });
                        $imitate.css({
                            'margin-left':$(_this).css('margin-left'),
                            'margin-top':$(_this).css('margin-top'),
                            'text-align':'left',
                            'font-size':$(_this).css('font-size'),
                            'font-family':$(_this).css('font-family'),
                            'font-weight':$(_this).css('font-weight'),
                            'padding-left':parseInt($(_this).css('padding-left')) + 2 + 'px',
                            'line-height':_this.nodeName.toLowerCase() == 'textarea' ? $(_this).css('line-weight') : $(_this).outerHeight() + 'px',
                            'padding-top':_this.nodeName.toLowerCase() == 'textarea' ? parseInt($(_this).css('padding-top')) + 2 : 0
                        });
                        $(_this).before($imitate.click(function () {
                            $(_this).trigger('focus');
                        }));

                        $(_this).val().length != 0 && $imitate.hide();

                        if (options.onInput) {
                            var inputChangeEvent = typeof(_this.oninput) == 'object' ? 'input' : 'propertychange';
                            $(_this).bind(inputChangeEvent, function () {
                                $imitate[0].style.display = $(_this).val().length != 0 ? 'none' : 'inline-block';
                            });
                        } else {
                            $(_this).focus(function () {
                                $imitate.hide();
                            }).blur(function () {
                                    /^$/.test($(_this).val()) && $imitate.show();
                                });
                        }
                    }
                }
            });
            return this;
        }
    });
})(jQuery);

/*调用方式: textarea需要田间onInput=false属性*/
$('input[placeholder], textarea[placeholder]').each(function(){$(this).is('input')?$(this).iePlaceholder():$(this).iePlaceholder({onInput: false});});

$(document).ready(function(){
            if (typeof (Worker) == "undefined"){
                $('input[placeholder], textarea[placeholder]').each(function(){$(this).is('input')?$(this).iePlaceholder():$(this).iePlaceholder({onInput: false});});
            }

            });

  测试html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <!--便于页面更好的在移动平台上展示。
        <meta name="viewport" content="initial-scale=1.0,user-scalable=no">
        -->
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta http-equiv="Content-Language" content="utf-8" />
        <meta name="author" content="Gezhigang" />
        <title>placeholder</title>

        <script type="text/javascript" src="jquery-1.10.2.min.js"></script>
        <script type="text/javascript" src="placeholder.js"></script>

    </head>
    <body>
        <div style="margin-left: 30%;margin-top: 10%;">
            <form>
                <table>
                    <tr>
                        <td height="30px">用户名</td>
                        <td><input type="text" placeholder="这里输入帐号。。。"/></td>
                    </tr>
                    <tr >
                        <td height="30px">密码</td>
                        <td><input type="text" placeholder="这里输入密码。。。"/></td>
                    </tr>
                    <tr>
                        <td>&nbsp;</td>
                        <td><input type="submit" value="会员登录" /></td>
                    </tr>
                </table>
            </form>
        </div>
    </body>
</html>

  测试例子

时间: 2024-09-19 20:39:07

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

让IE6/7/8支持HTML5标签的方法

让IE(ie6/ie7/ie8)支持HTML5元素,我们需要在HTML头部添加以下JavaScript,这是一个简单的 document.createElement声明,利用条件注释针对IE来调用这个js文件.Opera,FireFox等其他非IE浏览器就会忽视这 段代码,也不会存在http请求. 方式一:引用google的html5.js文件,代码内容可以自己下载下来看.  代码如下 复制代码 <!–[if lt IE9]> <script src="http://html5

稳捷网络成为首家支持Html5内容安全防护厂商

关注HTML5近日,稳捷网络公司宣布,通过凭借专利的WedgeOS平台与高性能的DCI深度内容检测技术,稳捷网络成功实现了对HTML5内容与WebSocket协议的全面安全支持,从而大大降低了相关恶意软件与威胁的风险.据专家介绍,随着企业对于Web应用的依赖性越来越强,大量企业对HTML5的应用与日俱增.事实上,HTML5提供了 丰富的.反应迅速且规范的网络应用环境,满足了当前移动接入与云计算的应用趋势.换言之,基于HTML5用户可以获得更加动态与丰富的内容体验.总的 来看,HTML5要比以往的

ie 8-如何兼容ie8不支持小于1px的bug?

问题描述 如何兼容ie8不支持小于1px的bug? 现在需要每秒div宽度增加0.5px,其他浏览器都好,就是ie8不支持,一直为0,除了判断浏览器类型,还有其他方法吗? 解决方案 用一个变量来记录,不要使用parseInt(dom.style.width)来获取,ie8-每次只能增加1px <div id=""dv"" style=""border:solid 1px #000""></div><

让IE浏览器支持HTML5标准的方法

 自HTML5标准的提出就得到非常多的关注,而作为全球使用用户最多的IE浏览器能够支持HTML5标准也是大家备受关注一个问题,上周微软在技术大会上就表示目前微软正在开发的IE9将更加支持HTML5标准,但对于IE9是否将完全支持HTML5所有的标准,微软却表现的有点含糊其辞.HTML5标准能为网页带来更高效更洁净的代码,只有微软参与HTML5的设计工作,才能让IE浏览器识别更多的新元素.   HTML5标准预计是在2022年向全世界发布,虽然目前距他发布的日期还有3年左右的时间,但是我认为它距离

解决HTML5 placeholder的方案

windows系统中以下浏览器测试通过:Google Chrome 18,Firefox 12,IE 9,IE 6,Opera 11.5.在android 4.0系统也测试了下,原生浏览器及Opera Mobile12基本通过,缺陷是获得焦点时会清空Placeholder提示. jquery.placeholder.zhihu.js部分:    代码如下 复制代码    /*     * html5 placeholder pollfill     * - 使用绝对定位内嵌层     * - 也

JS 判断是否支持 HTML5 及 是否IE浏览器

要兼容IE8以下的浏览器,太多事情做不了.直接干掉 IE8以下的浏览器. <script type="text/javascript">  if(-[1,]){      if (window.applicationCache) {         alert("高级浏览器");//支持HTML5  就是IE10(含IE10)以上     }else{         alert("IE9"); //IE9     } }else{ 

微软IE9开发者预览版提供下载支持HTML5

北京时间3月17日早间消息,据国外媒体报道,微软3月16日开始提供IE9浏览器首个开发者预览版的下载,下载网址为www.IETestDrive.com. IE9平台预览版并不包含IE9用户界面,仅仅提供了浏览器的基本元素,尤其是微软最新的代号为Chakra的JavaScript引擎,以及一个列有测试网站的主页.该版本IE9并不包含"后退"等按钮,也没有任何安全性功能,仅仅只有基本的IE9渲染引擎,以及早期的开发者工具. 微软官方将在周二早晨的Mix10主题演讲中展示IE9开发者预览版,

Firefox6正式版试用 完整支持HTML5规则

原计划于本周二(8月16日)发布的Firefox 6.0正式版,提前两日便被它的粉丝们发现在Firefox的FTP服务器上已悄然出现了6.0正式版的丽影,欣喜的用户现在就已然可以下载到这一经典的浏览器来使用了. 相对于上个版本的Firefox5.0,经过两个多月的开发更新环节,Firefox 6.0正式版在很多方面进行了升级更新,笔者在这里将带大家一起来及早地来体验这款更新产品的各个亮点. Firefox 6.0正式版 功能更新的亮点包括 一.对HTML5规范的支持也更为完整 完整地支持HTML

傲游浏览器3开始支持HTML5视频

  今天傲游浏览器3.0迎来Beta后首轮更新,为用户带来多项大幅更新.其中包括用户期待已久的头像回归,XP下的新用户界面等.最抢眼的就是加入了两项对HTML5特性的支持. 新版的界面中,傲游账户的头像回到了浏览器左上角,并且在菜单的关键项目前加上了醒目图标,使傲游3的界面变得生机勃勃.同时,在WindowsXP系统下启用了新的浏览器界面,抛弃了美观度不佳的系统边框,新界面更加精美易用.对比图如下,看看是不是变漂亮了很多?傲游表示,对于界面的完善工作还在继续,目前的界面尚不是最终样式. 图1 W