【问题标题】:browser auto fill event浏览器自动填充事件
【发布时间】:2012-03-03 17:57:45
【问题描述】:

我正在做一些我有登录表单的网站。我知道人们可以在他们的网络浏览器中保存他们的用户名和密码。

我需要显示/隐藏标签 (<label></label>)。如果字段为空,则必须显示标签,如果字段中有任何值,则必须隐藏标签, 但这不适用于浏览器自动完成功能,我可以跟踪吗?

我试过了:

jQuery.change();

但这不起作用。

除了关闭自动完成功能之外,我能做些什么吗?

【问题讨论】:

    标签: javascript browser cross-browser


    【解决方案1】:

    这里的规范是在相关的 input 元素上使用 placeholder 属性:

    <input type="text" placeholder="username">
    

    username 将在没有文本时显示在输入中,否则隐藏。如果您正在使用它,那么您可能还应该使用Modernizr 之类的东西来检测支持并创建一个普通的文本标签。

    【讨论】:

    • 它适用于大多数现代浏览器,如您所见,即使 SO 也将其用于搜索字段(页面右上角)
    【解决方案2】:

    你必须手动触发更改事件:

    $("#username")
    .change(function () {
        // do stuff on change (check for default)
    })
    .trigger("change");
    

    如果您只想切换默认文本(或 aviraldg 推荐的 Modernizr 的占位符属性),或者使用一些水印库。

    【讨论】:

      【解决方案3】:

      这很简单。
      我将它用于我网站的文本字段。

      此编码采用 Javascript 文本。

      1. 使用名称和id = "comform" 创建一个&lt;form&gt;(您可以稍后更改;仅供参考)。
      2. 使用nameid = "Message" 创建&lt;input type = "text"(您可以稍后更改;仅供参考)。
      3. id = "ifsend" 创建一个&lt;div&gt;(您可以稍后更改;仅供参考)。

      同时创建一个变量来存储长度。var 编号(您可以稍后更改;仅供参考)。

      function counter() {
          var numbering;
          numbering = document.forms["comform"]["Message"].value.length;
          if (numbering == 0) {
              label();
          }
          if (numbering != 0) {
              document.getElementById('ifsend').innerHTML="";
          }
      }
      
      function label() {
          document.getElementById('ifsend').innerHTML="Your form value is empty";
      }
      

      【讨论】:

      • 这怎么没有帮助?您没有要求特定语言,而是想计算字段中的项目数,对吗?
      猜你喜欢
      • 2011-04-01
      • 2011-06-23
      • 2013-04-04
      • 2012-07-27
      • 2012-04-17
      • 2017-06-15
      相关资源
      最近更新 更多