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 相关文章推荐
再谈IE中Flash控件的自动激活 ObjectWrap
Mar 09 Javascript
JSON JQUERY模板实现说明
Jul 03 Javascript
javascript new fun的执行过程
Aug 05 Javascript
juqery 学习之三 选择器 层级 基本
Nov 25 Javascript
JS文本获得焦点清除文本文字的示例代码
Jan 13 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
Nov 04 Javascript
Angular4集成ng2-file-upload的上传组件
Mar 14 Javascript
详解JS中统计函数执行次数与执行时间
Sep 04 Javascript
Javascript confirm多种使用方法解析
Sep 25 Javascript
js实现石头剪刀布游戏
Oct 11 Javascript
解决Antd 里面的select 选择框联动触发的问题
Oct 24 Javascript
JS如何监听div的resize事件详解
Dec 03 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中利用post传递字符串重定向的实现代码
2011/04/21 PHP
解析yii数据库的增删查改
2013/06/20 PHP
php实例分享之mysql数据备份
2014/05/19 PHP
ThinkPHP登录功能的实现方法
2014/08/20 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
繁简字转换功能
2006/07/19 Javascript
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
jQuery 性能优化指南(2)
2009/05/21 Javascript
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
JavaScript 盒模型 尺寸深入理解
2012/12/31 Javascript
jquery取消选择select下拉框示例代码
2014/02/22 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
jQuery中change事件用法实例
2014/12/26 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
JavaScript设计模式之策略模式详解
2017/06/09 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
Angular如何由模板生成DOM树的方法
2019/12/23 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
Python正则表达式经典入门教程
2017/05/22 Python
Python中的取模运算方法
2018/11/10 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
python实现猜数字游戏
2020/03/25 Python
python实现滑雪者小游戏
2020/02/22 Python
作文评语大全
2014/04/23 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书