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


Posted in Javascript onJanuary 31, 2015

很久之前写了这个插件,基于jQuery实现的,主要用于IE下实现placeholder效果,可同时支持文本和密码输入框。

placeholder是HTML5新增的一个属性,当input设置了该属性后,该值的内容将作为灰色提示显示在文本框中,当文本框获得焦点时,提示文字消失。

下载地址:http://xiazai.3water.com/201501/other/placeholderfriend.rar

实现代码如下:

(function($) {

  /**

   * 没有开花的树

   * 2012/11/28 15:12

   */
  var placeholderfriend = {

    focus: function(s) {

      s = $(s).hide().prev().show().focus();

      var idValue = s.attr("id");

      if (idValue) {

        s.attr("id", idValue.replace("placeholderfriend", ""));

      }

      var clsValue = s.attr("class");

   if (clsValue) {

        s.attr("class", clsValue.replace("placeholderfriend", ""));

      }

    }

  }
  //判断是否支持placeholder

  function isPlaceholer() {

    var input = document.createElement('input');

    return "placeholder" in input;

  }

  //不支持的代码

  if (!isPlaceholer()) {

    $(function() {
      var form = $(this);
      //遍历所有文本框,添加placeholder模拟事件

      var elements = form.find("input[type='text'][placeholder]");

      elements.each(function() {

        var s = $(this);

        var pValue = s.attr("placeholder");

  var sValue = s.val();

        if (pValue) {

          if (sValue == '') {

            s.val(pValue);

          }

        }

      });
      elements.focus(function() {

        var s = $(this);

        var pValue = s.attr("placeholder");

  var sValue = s.val();

        if (sValue && pValue) {

          if (sValue == pValue) {

            s.val('');

          }

        }

      });
      elements.blur(function() {

        var s = $(this);

        var pValue = s.attr("placeholder");

  var sValue = s.val();

        if (!sValue) {

          s.val(pValue);

        }

      });
      //遍历所有密码框,添加placeholder模拟事件

      var elementsPass = form.find("input[type='password'][placeholder]");

      elementsPass.each(function(i) {

        var s = $(this);

        var pValue = s.attr("placeholder");

  var sValue = s.val();

        if (pValue) {

          if (sValue == '') {

            //DOM不支持type的修改,需要复制密码框属性,生成新的DOM

            var html = this.outerHTML || "";

            html = html.replace(/\s*type=(['"])?password\1/gi, " type=text placeholderfriend")

              .replace(/\s*(?:value|on[a-z]+|name)(=(['"])?\S*\1)?/gi, " ")

              .replace(/\s*placeholderfriend/, " placeholderfriend value='" + pValue

              + "' " + "onfocus='placeholderfriendfocus(this);' ");

            var idValue = s.attr("id");

            if (idValue) {

              s.attr("id", idValue + "placeholderfriend");

            }

            var clsValue = s.attr("class");

   if (clsValue) {

              s.attr("class", clsValue + "placeholderfriend");

            }

            s.hide();

            s.after(html);

          }

        }

      });
      elementsPass.blur(function() {

        var s = $(this);

        var sValue = s.val();

        if (sValue == '') {

          var idValue = s.attr("id");

          if (idValue) {

            s.attr("id", idValue + "placeholderfriend");

          }

          var clsValue = s.attr("class");

    if (clsValue) {

            s.attr("class", clsValue + "placeholderfriend");

          }

          s.hide().next().show();

        }

      });
    });

  }

  window.placeholderfriendfocus = placeholderfriend.focus;

})(jQuery);

使用很简单,例子如下:

<html>

<head>

<script src="jquery.js" type="text/javascript"></script>

<script src="placeholderfriend.js" type="text/javascript"></script>

</head>

<body>

<input placeholder="账号/手机号码" ><br>

<input placeholder="密码" type="password" >

</body>

</html>
Javascript 相关文章推荐
再论Javascript的类继承
Mar 05 Javascript
JQuery伸缩导航练习示例
Nov 13 Javascript
Javascript 读取操作Sql中的Xml字段
Oct 09 Javascript
JavaScript取得WEB安全颜色列表的方法
Jul 14 Javascript
jQuery 判断图片是否加载完成方法汇总
Aug 10 Javascript
javaScript实现可缩放的显示区效果代码
Oct 26 Javascript
CSS3 3D 技术手把手教你玩转
Sep 02 Javascript
jQuery动态修改字体大小的方法【测试可用】
Sep 09 Javascript
Node.js的特点详解
Feb 03 Javascript
ajax接收后台数据在html页面显示
Feb 19 Javascript
关于redux-saga中take使用方法详解
Feb 27 Javascript
微信小程序与公众号卡券/会员打通的问题
Jul 25 Javascript
有效提高JavaScript执行效率的几点知识
Jan 31 #Javascript
JavaScript日期时间与时间戳的转换函数分享
Jan 31 #Javascript
JavaScript监听和禁用浏览器回车事件实例
Jan 31 #Javascript
JavaScript编程中容易出BUG的几点小知识
Jan 31 #Javascript
JavaScript实现的双向跨域插件分享
Jan 31 #Javascript
JavaScript判断变量是否为空的自定义函数分享
Jan 31 #Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
Dec 24 #Javascript
You might like
php将fileterms函数返回的结果变成可读的形式
2011/04/21 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
Gambit vs CL BO3 第一场 2.13
2021/03/10 DOTA
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
JS 面向对象的5钟写法
2009/07/31 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
深入解析Python中的WSGI接口
2015/05/11 Python
在Python的Django框架中创建和使用模版
2015/07/15 Python
python实现网站的模拟登录
2016/01/04 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
美国旅游网站:Tours4Fun
2017/02/17 全球购物
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
移动通信行业实习自我鉴定
2013/09/28 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
光棍节联谊晚会活动策划书
2014/10/10 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
简历中的自我评价应该这样写!
2019/07/12 职场文书
导游词之青岛太清宫
2019/12/13 职场文书
win10+anaconda安装yolov5的方法及问题解决方案
2021/04/29 Python
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android