IE8 不支持html5 placeholder的解决方案

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

/**
 * jQuery EnPlaceholder plug
 * version 1.0                            2014.07.01戈志刚
 * by Frans.Lee <[email protected]>  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-10-16 12:27:32

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

ie8以下版本(包括ie8)的浏览器不支持html5标签属性解决方案(Modernizr 2.6.2插件的使用)

今天脑抽想用html5标签设计一个网页,我本人用的是火狐浏览器,都弄好后我发现一个很严重的问题,除了ie9以下的浏览器都不能支持html5标签(article,aside,dialog,footer,header,section,footer,nav,figure,menu). 我上网找了好多中方法,有网友说使用 <!--[if lt IE9]> <script> (function() { if (! /*@[email protected]*/ 0) return; var e

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

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

解决ie不支持HTML5 placeholder的问题

https://github.com/mathiasbynens/jquery-placeholder 解决ie不支持HTML5 placeholder的问题Requires jQuery 1.6+. For an older version of this plugin that works under jQuery 1.4.2+, see v1.8.7.Works in all A-grade browsers, including IE6.

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

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

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

IE8.0及以下不支持html5,css3的解析.目前为止IE8以下的版本使用率在10%左右,网站还是有必要兼容的. 1,在你的所有css最后判断引入两个js文件. html5.js  是用来让ie8浏览器能将h5标签转化为块元素 respond.js   是让ie8支持css3的js <!--[if lt IE9]> <script src="html5.js"></script> <script src="Respond.js&q

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

完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法:HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显得非常简单.HTML5的新标签元素有:<header>定义页面或区段的头部:<footer>定义页面或区段的尾部:<nav>定义页面或区段的导航区域:<section>页面的逻辑区域或内容组合:<article>定义正文或一篇完整的内容:<as

完美解决IE5,IE6,IE7,IE8不支持html5标签的方法

HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显得非常简单. HTML5的新标签元素有: <header>定义页面或区段的头部: <footer>定义页面或区段的尾部: <nav>定义页面或区段的导航区域: <section>页面的逻辑区域或内容组合: <article>定义正文或一篇完整的内容: <aside>定义补充或相关内容: 使用他们能让代码

IE8不支持属性placeholder

$(function () { // -- Constants -- var PLACE_HOLDER_COLOR = "rgb(169,169,169)"; // "darkGrey" does not work in IE6 var PLACE_HOLDER_DATA_NAME = "original-font-color"; // -- Util Methods -- var getContent = function (element)

让IE6/IE7/IE8支持HTML5标签的js代码方法

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