`

HTML5在IE下兼容placeholder属性的jquery插件

 
阅读更多

折腾一下午,总算解决了这个比较蛋疼的问题。

前端用的bootstrap做的,所以很多html5

结果到ie下面一测,乖乖。不得了,所有的input里面的placeholder等都出不来了。

哭吧。

 

百度关键词 jquery html5 placeholder 查找

 

果然都是高手,还有很多类似问题。

 

找了好多。发现个还算圆满的。这不得不再次感谢我们伟大的互联网啊。

 

下面是代码:

 

$.fn.extend({
    /**
     * 该方法为了解决不支持placeholder属性的浏览器下达到相似效果作用
     * @param _color 文本框输入字体颜色,默认黑色
     * @param _plaColor 文本框placeholder字体颜色,默认灰色#a3a3a3
     */
    inputTip: function (_color, _plaColor) {
        _color = _color || "#000000";
        _plaColor = _plaColor || "#a3a3a3";
        function supportsInputPlaceholder() { // 判断浏览器是否支持html5的placeholder属性
            var input = document.createElement('input');
            return "placeholder" in input;
        }

        function showPassword(_bool, _passEle, _textEle) { // 密码框和文本框的转换
            if (_bool) {
                _passEle.show();
                _textEle.hide();
            } else {
                _passEle.hide();
                _textEle.show();
            }
        }

        if (!supportsInputPlaceholder()) {
            this.each(function () {
                var thisEle = $(this);
                var inputType = thisEle.attr("type")
                var isPasswordInput = inputType == "password";
                var isInputBox = inputType == "password" || inputType == "text";
                if (isInputBox) { //如果是密码或文本输入框
                    var isUserEnter = false; // 是否为用户输入内容,允许用户的输入和默认内容一样
                    var placeholder = thisEle.attr("placeholder");

                    if (isPasswordInput) { // 如果是密码输入框
                        //原理:由于input标签的type属性不可以动态更改,所以要构造一个文本input替换整个密码input
                        var textStr = "<input type='text' class='" + thisEle.attr("class") + "' style='" + (thisEle.attr("style") || "") + "' />";
                        var textEle = $(textStr);
                        textEle.css("color", _plaColor).val(placeholder).focus(
                            function () {
                                thisEle.focus();
                            }).insertAfter(this);
                        thisEle.hide();
                    }
                    thisEle.css("color", _plaColor).val("");//解决ie下刷新无法清空已输入input数据问题
                    if (thisEle.val() == "") {
                        thisEle.val(placeholder);
                    }
                    thisEle.focus(function () {
                        if (thisEle.val() == placeholder && !isUserEnter) {
                            thisEle.css("color", _color).val("");
                            if (isPasswordInput) {
                                showPassword(true, thisEle, textEle);
                            }
                        }
                    });
                    thisEle.blur(function () {
                        if (thisEle.val() == "") {
                            thisEle.css("color", _plaColor).val(placeholder);
                            isUserEnter = false;
                            if (isPasswordInput) {
                                showPassword(false, thisEle, textEle);
                            }
                        }
                    });
                    thisEle.keyup(function () {
                        if (thisEle.val() != placeholder) {
                            isUserEnter = true;
                        }
                    });
                }
            });
        }
    }
});

$(function () {
    $("input").inputTip();  // 调用inputTip方法
    $("input[type='button']").focus();  // 页面打开后焦点置于button上,也可置于别处。否则IE上刷新页面后焦点在第一个输入框内造成placeholder文字后紧跟光标现象
});

 

 

代码引用的方式为:

<!--[if lt IE 9]>
<script src="assets/js/jquery-placeholder.js"></script>
<![endif]-->

 

打完收工,叔也很累了。现在还捣腾这些前段。木有美工,真蛋疼~~~

 

 

分享到:
评论

相关推荐

    IE下实现placeholder效果的jquery插件

    本篇将详细介绍如何使用一个名为"placeholderfriend.js"的jQuery插件,在IE浏览器下实现`placeholder`效果。 首先,我们来看`placeholderfriend.js`插件的基本原理。这个插件的工作机制是通过监听页面加载和输入框...

    placeholder效果的jQuery插件,支持IE6、IE7

    标题中的“placeholder效果的jQuery插件,支持IE6、IE7”指的是一个专门用于处理HTML5 placeholder属性的jQuery扩展,这个插件使得在不支持HTML5的旧版Internet Explorer(如IE6和IE7)中也能实现类似的功能。在...

    jQuery实现的一个自定义Placeholder属性插件

    Placeholder属性是HTML5中的一个新特性,它允许开发者在表单元素中提供一些提示信息,当输入框为空时,会显示这个提示文本。当用户开始输入时,提示信息会自动消失。这个属性极大地方便了用户在输入框中输入信息的...

    ie6 7 8兼容html5属性placeholder

    HTML5的`placeholder`属性是现代网页开发中的一个重要特性,它允许在输入框(`&lt;input&gt;`)或文本区域(`&lt;textarea&gt;`)内提供一个提示文本,该文本会在用户聚焦元素时消失。这个功能在IE6、7、8等较老版本的Internet ...

    input中placeholder在Ie上兼容

    标题提到的“input中placeholder在Ie上兼容”指的是HTML5中的`placeholder`属性在Internet Explorer(IE)浏览器上的支持情况。`placeholder`属性用于在输入框`&lt;input&gt;`内显示提示文字,帮助用户了解输入字段应该...

    解决IE下不支持placeholder属性

    在互联网技术日新月异的今天,HTML5引入了许多新的特性,其中之一便是`placeholder`属性。这个属性在现代浏览器中广泛被使用,为输入框提供了提示文本,但在早期版本的Internet Explorer (IE)中并不支持。`...

    IE7 浏览器处理 兼容 input placeholder.zip

    在前端开发中,IE7浏览器的兼容性问题一直是一个挑战,特别是对于HTML5新特性,如`input`元素的`placeholder`属性。`placeholder`属性允许我们在输入框中设置提示文字,当用户聚焦输入框时,提示文字会自动消失。...

    15种表单占位符placeholder动画jquery插件

    foxholder.js是一款高效且功能丰富的jQuery插件,它的主要功能是在用户输入表单前显示提示文本,也就是我们常说的占位符(placeholder)。这些占位符不仅起到了提示作用,还带有15种不同的动画效果,为用户提供了更...

    placeholder(HTML 5) IE 兼容插件

    为了实现全浏览器的兼容性,我们需要寻找一种解决方案,这就是“placeholder HTML 5 IE 兼容插件”的作用。 这篇博客文章(https://alxw4616.iteye.com/blog/2098609)很可能介绍了如何利用JavaScript或者jQuery来...

    ie8兼容placeholder.zip

    总的来说,处理IE8的`placeholder`兼容问题主要依赖于JavaScript和jQuery插件,通过这些方法,我们可以使旧版浏览器也能享受到现代Web开发带来的便利性。尽管现在大部分用户都已经升级到更现代的浏览器,但在某些...

    input的placeholder属性兼容ie8 优化版

    `placeholder` 属性的原生支持始于 HTML5,因此,对于那些不支持 HTML5 的浏览器,如 IE8 和 IE9,我们需要通过 JavaScript 或 jQuery 插件来模拟这一功能。在描述中提到的方法是通过创建一个 `&lt;span&gt;` 元素来显示...

    jQuery placeholder实现源码(兼容所有浏览器)

    总结来说,jQuery `placeholder`实现的源码主要是通过模拟`placeholder`属性来达到在所有浏览器中的兼容性。它通过监听`focus`和`blur`事件,动态地添加和移除提示文本,确保用户能够顺畅地与输入框交互。对于不支持...

    IE8支持的placeholder组件

    "IE8支持的placeholder组件"就是一个为了解决IE8及其以下版本浏览器不支持HTML5 `placeholder`属性而设计的解决方案。这个组件基于jQuery库,能够为这些旧版Internet Explorer提供类似HTML5 `placeholder`的效果,...

    jquery.placeholder.js

    总结来说,`jquery.placeholder.js`是一个小巧而实用的jQuery插件,它解决了IE浏览器对`placeholder`属性的兼容性问题,使得无论在哪个浏览器环境下,用户都能享受到一致的用户体验。通过简单的引入和调用,以及可选...

    让IE下支持Html5的placeholder属性的插件

    为了解决这个问题,我们可以使用插件或脚本来使IE兼容HTML5的placeholder属性。 给出的代码是一个jQuery插件示例,用于模拟placeholder的效果。这段代码首先检查当前浏览器是否原生支持placeholder属性,如果不支持...

    input框中出现提示文字(兼容ie 火狐 谷歌)

    `placeholder`属性是HTML5引入的新特性,它允许我们在`&lt;input&gt;`元素内设置提示文本,但遗憾的是,这个特性在IE8及以下版本并不支持。 为了解决这个问题,我们需要采用一些技巧来实现跨浏览器的提示文字兼容性。附件...

    实现跨浏览器的placeholder,兼容IE7

    在现代Web开发中,`placeholder`属性是HTML5的一个特性,用于在输入框(input)内显示提示信息,当用户开始输入或聚焦时,提示信息会自动消失。然而,这个功能在旧版本的浏览器,尤其是Internet Explorer (IE)的早期...

    JqueryPlaceHolder

    本文将深入探讨`jQuery Placeholder`插件的工作原理、如何使用以及其在解决IE浏览器兼容性问题中的应用。 ### 1. 插件简介 `jQuery Placeholder`是由一些热心的开发者创建的,它的主要目标是为那些不支持HTML5 `...

    IE下支持文本框和密码框placeholder效果的JQuery插件分享

    总结来说,这个jQuery插件通过监听输入框的焦点和失焦事件,以及在页面加载时对输入框进行初始化,成功地在IE浏览器上实现了与HTML5`placeholder`属性相似的功能。它为那些不支持`placeholder`属性的浏览器提供了一...

Global site tag (gtag.js) - Google Analytics