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 相关文章推荐
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
Jan 06 Javascript
js实现的切换面板实例代码
Jun 17 Javascript
JavaScript中Date.toSource()方法的使用教程
Jun 12 Javascript
jquery实现的树形目录实例
Jun 26 Javascript
浅谈JavaScript中指针和地址
Jul 26 Javascript
bootstrap 通过加减按钮实现输入框组功能
Nov 15 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
Feb 21 Javascript
JavaScript中变量提升与函数提升经典实例分析
Jul 26 Javascript
使用Angular-CLI构建NPM包的方法
Sep 07 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
Mar 07 Javascript
解决layui弹出层layer的area过大被遮挡的问题
Sep 21 Javascript
Vue中错误图片的处理的实现代码
Nov 07 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
初探PHP5
2006/10/09 PHP
使用eAccelerator加密PHP程序
2008/10/03 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
2013/07/01 PHP
浅析php与数据库代码开发规范
2013/08/08 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
php数组函数array_key_exists()小结
2015/12/10 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
关于使用runtimeStyle属性问题讨论文章
2007/03/08 Javascript
用js实现手把手教你月入万刀(转贴)
2007/11/07 Javascript
js中if语句的几种优化代码写法
2011/03/12 Javascript
浅谈jQuery中setInterval()方法
2015/07/07 Javascript
理解javascript对象继承
2016/04/17 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
python daemon守护进程实现
2016/08/27 Python
Python实现的异步代理爬虫及代理池
2017/03/17 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
2019/08/26 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
一个SQL面试题
2014/08/21 面试题
入党申请自荐书范文
2014/02/11 职场文书
八一建军节感言
2014/02/28 职场文书
结婚喜宴主持词
2014/03/14 职场文书
贷款承诺书范文
2014/05/19 职场文书
迎国庆演讲稿
2014/09/15 职场文书
公务员政审材料
2014/12/23 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
SQLServer常见数学函数梳理总结
2022/08/05 MySQL