让Placeholder在IE中燥起来

网上有好多关于这方面解决兼容性问题的文章,很多招式,学会这一招,让你轻松搞定Placeholder的兼容性,叫我好人,拿走,不谢。。。。

placeholder属性是HTML5 中为input添加的。在input上提供一个占位符,文字形式展示输入字段预期值的提示信息(hint),该字段会在输入为空时显示。

<input type="text" id="Title" class="so-input-d w270" placeholder="请输入标题" />

像下图用placeholder刚刚好,但是IE6 7 8 9 不支持呀,一篇空白!此时此刻心情肯定是日了狗!!!!!,搞web开发的一定要考虑兼容性,业界良心需要。。。。

使用前:

使用后:

疗效不一般,使用之后萌萌哒。

目前浏览器的支持情况:

浏览器 IE6/7/8/9 IE10+ Firefox Chrome Safari 
是否支持 NO YES YES YES YES

下面分享一个Js文件代码,简单粗暴的把问题解决了:

 (function ($) {
    $.fn.myPlaceholder = function (options) {
        var defaults = {
            pColor: "#acacac",
            pFont: "16px",
            posL: 8,
            zIndex: "99"
        },
        opts = $.extend(true, defaults, options);

        if ("placeholder" in document.createElement("input")) return;
        return this.each(function () {
            //$(this).parent().css("position", "relative");
            var isIE = $.browser.msie,
            version = $.browser.version;

            //不支持placeholder的浏览器
            var $this = $(this),
                msg = $this.attr("placeholder"),
                iH = $this.outerHeight(),
                iW = $this.outerWidth(),
                iX = $this.offset().left,
                iY = $this.offset().top,
                oInput = $("<label>", {
                    "text": msg,
                    "css": {
                        "position": "absolute",
                        "left": iX + "px",
                        "top": iY + "px",
                        "width": iW - opts.posL + "px",
                        "padding-left": opts.posL + "px",
                        "height": iH + "px",
                        "line-height": iH + "px",
                        "color": opts.pColor,
                        "font-size": opts.pFont,
                        "z-index": opts.zIndex,
                        "cursor": "text"
                    }
                }).insertBefore($this);

            //初始状态就有内容
            var value = $this.val();
            if (value.length > 0) {
                oInput.hide();
            };
            var myEvent;
            if (isIE && version < 9) {
                myEvent = "propertychange";
            } else {
                myEvent = "input";
            }
            $this.bind(myEvent, function () {
                var value = $(this).val();
                if (value.length > 0) {
                    oInput.hide();
                } else {
                    oInput.show();
                }
            });
            oInput.click(function () {
                $this.trigger("focus");
            });
        });
    }
})(jQuery);

这是用JQUERY插件化思想的解决的!

在页面或者操作的Js文件只用这样轻轻一搞:

$(function () {
$("#Title").myPlaceholder();
});

Placeholder兼容问题就解决了(文章标红的地方注意ID一致)!

抓紧有限的时间,燥起来!

时间: 2024-10-06 05:36:15

让Placeholder在IE中燥起来的相关文章

placeholder在IE8中兼容性问题解决

placeholder是HTML5中的一个属性,可以在文本框中设置placeholder属性来显示一些提示性的文字,但对IE10以下的浏览器不支持,下面方法可以让placeholder能够使用在IE10以下的版本中. 第一种方法是在页面中添加下面一段脚本: <script type="text/javascript"> if( !('placeholder' in document.createElement('input')) ){ $('input[placeholde

placeholder 解决UITextField中placeholder和text文本同时显示的问题

TextField都使用了placeholder属性,但在代码中又设置了text属性,因此ViewController会同时显示placeholder文本和text文本. 这个问题让我彻底崩溃.按道理说当text中的文本长度为0时placeholder文本显示,text文本长度不为0时placeholder应该隐藏才对? 而且正常情况下我也没有遇到过这个问题.后来我新建项目,进行多次尝试都不能复现这个问题. 虽然问题导致的原因至今没有找到.但google工作成果也不是一点没有.Stackover

.Net MVC TextBoxFor 扩展 placeholder 与 class 属性

namespace System.Web.Mvc { public static class HtmlHelperExtensions { public static MvcHtmlString BsTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string placeholde

Jquery插件placeholder的用法

闲的蛋疼,演示一下Jquery插件placeholder的用法,借助该插件能够轻松实现HTML5中placeholder特效: 效果图: 实现代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String basePath = request.getScheme()+"://&quo

placeholder的兼容处理(jQuery下)

这是一个老问题,结合前辈们的经验,需要处理的问题有一下几个. 1.只有输入框(input/textarea)下的palaceholder属性存在的时候才需要处理这类兼容 2.处理好输入框上焦点和是焦点的文本显示 3.密码输入框比较特殊,因为为其设置显示文本时显示的是一串“***”.这个问题后面分析.处理好前两点还是比较简单的,处理源码为如下 var browserSupport = { placeholder: 'placeholder' in document.createElement('i

DIV实现CSS 的placeholder效果

placeholder是HTML5中input的属性,但该属性并不支持除input以外的元素 但我们可以使用Css before选择器来实现完全相同的效果 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Div+placeholder</title> <style> .rich{ color:

sass的mixin,extend,placeholder,function

1. mixin 就是定义了一个函数,可以传参,并且设定默认值,css选择器可以通过@include来引用,mixin混入的代码,就是原样复制,不会合并,会造成冗余 例如: @mixin br6($br6: 6px){ /* 传一个带值的参数 */ border-radius: $br6; } div{ @include br6(); /* 如果不传值就是6px,传值会覆盖原始值 */ } 再如: @mixin icon { transition: background-color ease .

React学习—组件

一.定义 组件就像JavaScript的函数.组件可以接收任意输入(称为"props"), 并返回 React 元素,用以描述屏幕显示内容. 二.组件的分类 1.函数式组件(无状态组件) 它是为了创建纯展示组件,这种组件只负责根据传入的props来展示,不涉及到要state状态的操作.在大部分React代码中,大多数组件被写成无状态的组件,通过简单组合可以构建成其他的组件等:这种通过多个简单然后合并成一个大应用的设计模式被提倡. function Welcome(props) { re

【06】react 之 PropsType

React组件创建的时候,需要传入属性,我们可以使用使用PropTypes进行类型检查,您可以使用React.PropTypes在组件的道具上运行. React.PropTypes.array React.PropTypes.bool React.PropTypes.func React.PropTypes.number React.PropTypes.object React.PropTypes.string React.PropTypes.symbol React.PropTypes.nod