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 相关文章推荐
javascript AutoScroller 函数类
May 29 Javascript
js实现类似jquery里animate动画效果的方法
Apr 10 Javascript
jquery遍历函数siblings()用法实例
Dec 24 Javascript
jQuery基于muipicker实现仿ios时间选择
Feb 22 Javascript
Vue.js实现文章评论和回复评论功能
May 30 Javascript
基于Node的React图片上传组件实现实例代码
May 10 Javascript
JS判断时间段的实现代码
Jun 14 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
Aug 25 Javascript
vue做网页开场视频的实例代码
Oct 20 Javascript
小程序组件之仿微信通讯录的实现代码
Sep 12 Javascript
vue实现图片预览组件封装与使用
Jul 13 Javascript
Vue解析剪切板图片并实现发送功能
Feb 04 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采集速度探究总结(原创)
2008/04/18 PHP
PHP 批量删除 sql语句
2009/06/05 PHP
深入PHP运行环境配置的详解
2013/06/04 PHP
PHP使用Mysql事务实例解析
2014/09/08 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
模仿百度三维地图的js数据分享
2011/05/12 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
JavaScript 学习笔记之操作符
2015/01/14 Javascript
jQuery实现统计输入文字个数的方法
2015/03/11 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
vue实现动态数据绑定
2017/04/28 Javascript
微信小程序页面生命周期详解
2018/01/31 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
基于树莓派的语音对话机器人
2019/06/17 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
印尼旅游网站:via
2017/11/12 全球购物
精灵市场:Pixie Market
2019/06/18 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
意大利和国际奢侈品牌购物网站:Suitnegozi.com
2021/01/15 全球购物
语文教育专业应届生求职信
2013/11/23 职场文书
生产部厂长助理职位说明书
2014/03/03 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
python画条形图的具体代码
2022/04/20 Python