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 相关文章推荐
Code: write(s,d) 输出连续字符串
Aug 19 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
Jan 13 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
Dec 07 Javascript
AngularJS教程 ng-style 指令简单示例
Aug 03 Javascript
原生js实现jquery函数animate()动画效果的简单实例
Aug 21 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
Oct 16 Javascript
jquery获取下拉框中的循环值
Feb 08 Javascript
使用JS编写的随机抽取号码的小程序
Aug 11 Javascript
vue绑定class与行间样式style详解
Aug 16 Javascript
js获取html页面代码中图片地址的实现代码
Mar 05 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
Apr 18 jQuery
9个JavaScript日常开发小技巧
Oct 06 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
在“咖啡之国”感受咖啡文化
2021/03/03 咖啡文化
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
2015/03/03 PHP
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
js获取url中的参数且参数为中文时通过js解码
2014/03/19 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
jQuery插件实现无缝滚动特效
2015/11/24 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
2016/11/20 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
2017/03/21 jQuery
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
2017/07/12 Javascript
vue-router实现tab标签页(单页面)详解
2017/10/17 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
python 提取文件的小程序
2009/07/29 Python
Python过滤函数filter()使用自定义函数过滤序列实例
2014/08/26 Python
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
Python正则表达式非贪婪、多行匹配功能示例
2017/08/08 Python
Python 多进程和数据传递的理解
2017/10/09 Python
详细分析python3的reduce函数
2017/12/05 Python
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
python实现复制文件到指定目录
2019/10/16 Python
pymysql模块的操作实例
2019/12/17 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
Opencv常见图像格式Data Type及代码实例
2020/11/02 Python
优秀中学生事迹材料
2014/01/31 职场文书
保密工作实施方案
2014/02/24 职场文书
青春雷锋观后感
2015/06/10 职场文书