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跨域代码片段
Aug 30 Javascript
node.js中的buffer.slice方法使用说明
Dec 10 Javascript
EasyUI实现二级页面的内容勾选的方法
Mar 01 Javascript
JavaScript判断是否为数组的3种方法及效率比较
Apr 01 Javascript
Webwork 实现文件上传下载代码详解
Feb 02 Javascript
js实现StringBuffer的简单实例
Sep 02 Javascript
Node.js中如何合并两个复杂对象详解
Dec 31 Javascript
jQuery UI仿淘宝搜索下拉列表功能
Jan 10 Javascript
React实现全局组件的Toast轻提示效果
Sep 21 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
Jan 22 Javascript
JavaScript实现密码强度实时验证
Mar 18 Javascript
JavaScript WeakMap使用详解
Feb 05 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 FPDF类库应用实现代码
2009/03/20 PHP
php实现的短网址算法分享
2014/06/20 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
PHP封装的非对称加密RSA算法示例
2018/05/28 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
jQuery基础知识点总结(DOM操作)
2016/06/01 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
2016/09/21 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
利用Node.js+Koa框架实现前后端交互的方法
2017/02/27 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
Python with用法实例
2015/04/14 Python
Python中三元表达式的几种写法介绍
2019/03/04 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
用Python画一个LinkinPark的logo代码实例
2019/09/10 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
数控技术应届生求职信
2013/11/13 职场文书
艺术教育实施方案
2014/05/03 职场文书
2015年考研复习计划
2015/01/19 职场文书
公司新员工欢迎词
2015/09/30 职场文书
2019年亲子运动会口号
2019/10/11 职场文书