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 相关文章推荐
PJBlog插件 防刷新的在线播放器
Oct 25 Javascript
javascript 年月日联动实现核心代码
Dec 21 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
Jan 22 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
Mar 03 Javascript
ionic实现滑动的三种方式
Aug 27 Javascript
js模拟微博发布消息
Feb 23 Javascript
js 转义字符及URI编码详解
Feb 28 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
Mar 03 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
Dec 19 Javascript
JS处理一些简单计算题
Feb 24 Javascript
vue更改数组中的值实例代码详解
Feb 07 Javascript
JS面试题中深拷贝的实现讲解
May 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
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
js更优雅的兼容
2010/08/12 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
JavaScript 代码压缩工具小结
2012/02/27 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
js for循环倒序输出数组元素的实例
2017/03/01 Javascript
基于JavaScript中标识符的命名规则介绍
2018/01/06 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
centos下更新Python版本的步骤
2013/02/12 Python
Python中用pycurl监控http响应时间脚本分享
2015/02/02 Python
Python制作简易注册登录系统
2016/12/15 Python
Python简单定义与使用字典dict的方法示例
2017/07/25 Python
Python实现感知器模型、两层神经网络
2017/12/19 Python
django连接mysql配置方法总结(推荐)
2018/08/18 Python
python监控nginx端口和进程状态
2019/09/06 Python
基于python实现从尾到头打印链表
2019/11/02 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
python如何使用腾讯云发送短信
2020/09/17 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
Python Django路径配置实现过程解析
2020/11/05 Python
HTML5移动端开发遇见的东西
2019/10/11 HTML / CSS
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
高中毕业自我鉴定
2013/12/19 职场文书
国培远程培训感言
2014/03/08 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
爱国主义主题班会
2015/08/14 职场文书
2019年汽车租赁合同范本!
2019/08/12 职场文书