`
阅读更多

jQuery EnPlaceholder plug (兼容IE浏览器的placeholder)使用

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

蕃薯耀 2015年9月8日 14:24:47 星期二

http://fanshuyao.iteye.com/

 

enplaceholder是一个比较好的placeholder插件,可以在不支持placeholder的浏览器中显示提示,如果浏览器本身支持,就不会使用本插件

 

插件来源:http://www.ifrans.cn/jquery-enplaceholder-plug/

插件demo:http://www.ifrans.cn/demo/enplaceholder.html

 

插件有2仲模式,个人喜欢通过插入元素模拟这种

 

//通过value模拟placeholder
$('input').placeholder();
 
//通过插入元素模拟placeholder
$('input').placeholder({isUseSpan:true});

 

文本框内容改变时placeholder消失:

$('#username2,#password').placeholder({isUseSpan:true});

 

获得焦点时placeholder消失:

$('#address2').placeholder({isUseSpan:true,onInput:false});

 

但插件还有一个问题,就是input不使用placeholder时会返回undefined,但本人已经修改问题,增加了如下代码:

//修正无placeholder时,显示undefined问题
 if(defaultValue != null && typeof(defaultValue) != "undefined")

 

该插件属于Jquery插件,依赖Jquery

插件见附件,或下面的源代码。

 

源代码:

 

 

/**
 * jQuery EnPlaceholder plug
 * EnPlaceholder是一个跨浏览器实现placeholder效果的jQuery插件
 * version 1.0
 * by Frans.Lee <dmon@foxmail.com>  http://www.ifrans.cn
 * 
 * 修正无placeholder显示undefined问题(lqy--http://fanshuyao.iteye.com/)
 * var defaultValue = $(_this).attr('placeholder');
 * if(defaultValue != null && typeof(defaultValue) != "undefined"){
 * 
 * }
 */
;(function ($) {
    $.fn.extend({
        "placeholder":function (options) {
            options = $.extend({
                placeholderColor:'#ACA899',
                isUseSpan:false, //是否使用插入span标签模拟placeholder的方式,默认false,默认使用value模拟
                onInput:true  //使用标签模拟(isUseSpan为true)时,是否绑定onInput事件取代focus/blur事件
            }, options);
			
            $(this).each(function () {
                var _this = this;
                var supportPlaceholder = 'placeholder' in document.createElement('input');
                if (!supportPlaceholder) {
                    var defaultValue = $(_this).attr('placeholder');
                    //修正无placeholder时,显示undefined问题
                    if(defaultValue != null && typeof(defaultValue) != "undefined"){
                    	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).outerWidth()+'px; height:'+$(_this).outerHeight()+'px;">' + defaultValue + '</span>');
                            $imitate.css({
                                'margin-left':$(_this).css('margin-left'),
                                'margin-top':$(_this).css('margin-top'),
                                '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) {
                                //绑定oninput/onpropertychange事件
                                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);

 

 

 

 

 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

蕃薯耀 2015年9月8日 14:24:47 星期二

http://fanshuyao.iteye.com/

2
2
分享到:
评论

相关推荐

    IE浏览器支持placeholder

    针对IE浏览器对`placeholder`属性的不兼容问题,开发者通常会采用JavaScript(JS)插件来实现兼容性处理。这些插件通过JavaScript代码模拟`placeholder`的效果,使得在IE浏览器上也能呈现类似的功能。文件名...

    IE兼容placeholder js

    描述中提到的“完美兼容H5 placeholder属性在IE9及以下版本的问题”,意味着这个解决方案能够有效地在不支持`placeholder`属性的IE浏览器上模拟出相同的效果。"自测可用,修改点少"表示这个解决方案经过了实际测试,...

    input中placeholder在Ie上兼容

    以下是一个简单的jQuery插件示例,用于在不支持`placeholder`属性的IE浏览器中实现类似的功能: ```javascript (function($){ // 检查浏览器是否支持placeholder属性 if (!('placeholder' in document....

    IE8 placeholder 兼容使用插件(可兼容password类型input)

    IE8 placeholder 兼容使用插件。可兼容password类型,可以正常显示提示字。

    placeholder属性支持所有IE浏览器的插件

    总结起来,这个插件解决了H5`placeholder`属性在IE浏览器中的兼容性问题,通过代码封装和闭门技术实现了跨浏览器的支持。对于开发者来说,这是一个极好的学习资源,可以帮助他们提高在实际项目中处理浏览器兼容性...

    IE下实现placeholder效果的jquery插件

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

    解决IE下不支持placeholder属性

    本篇文章将深入探讨如何在IE浏览器中实现`placeholder`属性的兼容性,以便让所有用户都能享受到这一便捷功能。 首先,我们需要了解`placeholder`属性的基本用法。在HTML中,我们通常这样使用它: ```html ...

    html5.js-ie浏览器兼容处理文件

    HTML5.js是一个专门为老旧的IE浏览器提供HTML5新特性兼容性的JavaScript库。由于Internet Explorer(尤其是版本8及以下)在支持HTML5标准方面存在显著不足,开发者常常需要借助这类库来确保网站在不同浏览器间的一致...

    两种方法基于jQuery实现IE浏览器兼容placeholder效果

    标题中提到的知识点是"基于jQuery实现IE浏览器兼容placeholder效果"。jQuery是一个快速、小巧、功能丰富的JavaScript库,它通过简化HTML文档遍历、事件处理、动画和Ajax交互等操作,使得Web开发变得更加容易。而IE...

    IE8兼容性和判断IE浏览器版本

    IE8兼容性和判断IE浏览器版本 IE8兼容性是前端开发中经常遇到的问题,特别是在使用老版本的IE浏览器时。下面是IE8兼容性中的一些常见问题和解决方法: 首先,IE8只支持jquery2.0以下的版本,因此在使用jquery时...

    ie placeholder属性的兼容性问题解决方法

    复制代码代码如下: //placeholder功能实现 var placeholder = { add: function (el) { if (!(‘placeholder’ in document.createElement(‘input’))) { var self = placeholder; el.each(functio

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

    然而,浏览器的兼容性问题一直是开发者面临的一大挑战,特别是对于较老版本的IE浏览器。`placeholder`属性是HTML5引入的新特性,它允许我们在`&lt;input&gt;`元素内设置提示文本,但遗憾的是,这个特性在IE8及以下版本并不...

    placeholder(HTML 5) IE 兼容插件

    这篇博客文章(https://alxw4616.iteye.com/blog/2098609)很可能介绍了如何利用JavaScript或者jQuery来为不支持`placeholder`属性的IE浏览器添加兼容性。通常,这种插件会监听输入框的事件,如`focus`和`blur`,并...

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

    总的来说,这个jQuery插件是一个解决浏览器兼容性问题的实用工具,使得在老版本的IE浏览器上也能实现HTML5的placeholder效果,从而提高用户体验。通过学习和使用这个插件,开发者可以更好地理解和掌握如何利用jQuery...

    ie8兼容html5 css3圆角阴影渐变placeholder等属性

    - CSS3 PIE:这是一个流行的JavaScript库,通过VML(Vector Markup Language)技术为旧版IE浏览器提供对CSS3边框半径、圆角、阴影等特性的支持。 - Modernizr:这是一个JavaScript库,用于检测浏览器对HTML5和CSS3...

    jquery.placeholder.js

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

    jQuery实现IE输入框完成placeholder标签功能的方法

    则可以在谷歌浏览器等高级浏览器的输入框中实现替换文本的功能,也就是得到如下图所示的对话框: 但是这个属性在WIN7默认的浏览器IE8中无法兼容,更不要说IE6了。也就是说IE里面不支持placeholder这个标签。 不信的...

Global site tag (gtag.js) - Google Analytics