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 相关文章推荐
js中各种类型的变量在if条件中是true还是false
Jul 16 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
Oct 14 Javascript
js实现ifram取父窗口URL地址的方法
Feb 09 Javascript
Bootstrap框架下下拉框select搜索功能
Mar 26 Javascript
Ionic默认的Tabs模板使用实例
Aug 29 Javascript
最全面的百度地图JavaScript离线版开发
Sep 10 Javascript
基于vue的下拉刷新指令和滚动刷新指令
Dec 23 Javascript
关于react-router的几种配置方式详解
Jul 24 Javascript
20170918 前端开发周报之JS前端开发必看
Sep 18 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
Dec 08 Javascript
javascript实现函数柯里化与反柯里化过程解析
Oct 08 Javascript
vue中控制mock在开发环境使用,在生产环境禁用方式
Apr 06 Vue.js
有效提高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生成略缩图代码
2012/07/16 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
js弹出div并显示遮罩层
2014/02/12 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
Bootstrap每天必学之js插件
2015/11/30 Javascript
常常会用到的截取字符串substr()、substring()、slice()方法详解
2015/12/16 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
理解javascript模块化
2016/03/28 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
2017/03/08 Javascript
详解Vue2.0 事件派发与接收
2017/09/05 Javascript
javascript将list转换成树状结构的实例
2017/09/08 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
微信小程序实现顶部下拉菜单栏
2018/11/04 Javascript
[48:21]林俊杰圣堂刺客超神杀戮秀
2014/10/29 DOTA
python运行时间的几种方法
2016/06/17 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
2018/08/05 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
土木工程毕业生自荐信
2013/09/21 职场文书
技能竞赛活动方案
2014/02/21 职场文书
村党支部换届选举方案
2014/05/02 职场文书
校长创先争优承诺书
2014/08/30 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书