`
cwqcwk1
  • 浏览: 86832 次
文章分类
社区版块
存档分类
最新评论

IE下实现placeholder效果,支持文本框和密码框

 
阅读更多

很久之前写了这个插件,基于jQuery实现的,主要用于IE下实现placeholder效果,可同时支持文本和密码输入框。

placeholder是HTML5新增的一个属性,当input设置了该属性后,该值的内容将作为灰色提示显示在文本框中,当文本框获得焦点时,提示文字消失。

下载地址:http://download.csdn.net/detail/cwqcwk1/5676563(含demo)

实现代码如下:

(function($) {
  /**
   * 没有开花的树
   * http://blog.csdn.net/mycwq/
   * 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>


分享到:
评论

相关推荐

    IE下支持文本框和密码框placeholder效果的JQuery插件分享

    《IE下支持文本框和密码框placeholder效果的JQuery插件解析》 在现代Web开发中,HTML5的引入带来了许多便利的新特性,其中之一便是`placeholder`属性。这个属性允许开发者为输入框(input)设置一个提示信息,通常以...

    带提示的input输入框类似html5的 placeholder

    比如,它并不适用于所有浏览器,老版本的IE浏览器可能不支持。在这种情况下,可以借助JavaScript库或jQuery插件来实现兼容性处理。同时,`placeholder`仅提供静态提示,如果需要更复杂的交互,如动态提示或错误信息...

    js实现input密码框提示信息的方法(附html5实现方法)

    但在一些旧版浏览器中,如IE8及以下版本,`placeholder`属性并不被支持。因此,我们可以通过JavaScript来模拟`placeholder`的行为,以兼容那些不支持它的浏览器。 首先,我们来理解JavaScript如何实现密码框提示...

    jQuery制作input提示内容(兼容IE8以上)

    目前,可以通过CSS伪元素及现代浏览器的兼容性前缀来实现类似效果,如使用`:before`和`:after`伪元素,而现代浏览器如IE10及以上版本已经开始支持placeholder属性。 综上所述,本文向我们展示了一种通过jQuery来...

    TsForm:jQuery表单验证插件

    表单验证控件 支持文本框,密码框,下拉框,单选框,多选框,文本域以及对象等等的验证,包括必填,对比,正则等等验证 使用方法: 进行验证: $("#form").TsForm(); 清空表单: $("#form").TsFormReset(); 属性: minlength:...

    iOS App开发中UITextField组件的常用属性小结

    10. Font:指定文本的字体和字号,影响文本框内文字的视觉效果。 11. Min Font Size:设置文本框可显示的最小字体大小,当文本框尺寸缩小时,文本不会小于这个设定值。 12. Adjust To Fit:如果选中,当文本框尺寸...

    html入门到放弃笔记

    1、Microsoft Internet Explorer (IE) 2、Mozilla Firefox 3、Google Chrome 4、Apple Safari 5、Opera Opera(欧朋) 3、主要技术 1、HTML 2、CSS 3、Javascript 2、HTML入门(重点) 1、什么是HTML Hyper ...

    C#编程经验技巧宝典

    102 &lt;br&gt;0162 如何实现C#中用键完成TAB的功能 102 &lt;br&gt;0163 如何限制文本框密码输入长度 102 &lt;br&gt;0164 数据输入为空提示 103 &lt;br&gt;0165 如何设置文本框光标到末尾 103 &lt;br&gt;0166 输入法调整...

    css基础PPT学习教案.pptx

    &lt;input type="password" placeholder="密码" /&gt; 男 女 记住我 提交" /&gt; 重置" /&gt; ``` #### 二、CSS简介 CSS(层叠样式表,Cascading Style Sheets)是一种用于定义HTML文档外观和布局的语言。它使得...

    C#命名规范

    在软件开发过程中,良好的命名规范能够显著提升代码的可读性和维护性。本篇文章将基于提供的部分C#控件命名规范进行详细解析,帮助开发者理解并应用这些规则。 #### 二、控件命名规范 **1. 控件命名规则** - **...

Global site tag (gtag.js) - Google Analytics