【问题标题】:Auto complete for HTML formsHTML 表单的自动完成
【发布时间】:2013-03-27 18:25:40
【问题描述】:

我正在寻找有关表单字段自动完成的答案。

如何自动填写常见的输入,例如名字、姓氏、地址..?

在 Chrome 中,如果用户有 Google 个人资料,则可以自动填充字段。

IE 似乎提供了类似的功能:

(来自微软网站) “您可以使用 AutoComplete 来存储您在 Web 表单字段中键入的密码和其他信息。当您打开 AutoComplete 时,Internet Explorer 将自动填写您经常在 Web 表单中键入的字段,例如您的姓名和地址。”

有什么方法可以确保自动填充发生,跨浏览器,使用 HTML/JS?

【问题讨论】:

    标签: javascript jquery html autofill


    【解决方案1】:

    这个问题已经很老了,但我有一个 2017 年的更新答案

    现在IS有一个跨浏览器标准,说明如何命名<input> 标签以触发自动完成。

    Here's a link to the official current WHATWG HTML Standard for enabling autocomplete.

    Google 写了一个pretty nice guide 用于开发对移动设备友好的网络应用程序。他们有一节介绍如何命名表单上的输入以轻松使用自动填充。尽管它是为移动设备编写的,但这适用于桌面和移动设备!

    如何在您的 HTML 表单上启用自动完成功能

    以下是有关如何启用自动完成功能的一些要点:

    • 为所有<input> 字段使用<label>
    • autocomplete 属性添加到您的<input> 标记并使用此guide 填写。
    • 为所有<input> 标签正确命名nameautocomplete 属性
    • 示例

      <label for="frmNameA">Name</label>
      <input type="text" name="name" id="frmNameA"
      placeholder="Full name" required autocomplete="name">
      
      <label for="frmEmailA">Email</label>
      <input type="email" name="email" id="frmEmailA"
      placeholder="name@example.com" required autocomplete="email">
      
      <!-- note that "emailC" will not be autocompleted -->
      <label for="frmEmailC">Confirm Email</label>
      <input type="email" name="emailC" id="frmEmailC"
      placeholder="name@example.com" required autocomplete="email">
      
      <label for="frmPhoneNumA">Phone</label>
      <input type="tel" name="phone" id="frmPhoneNumA"
      placeholder="+1-555-555-1212" required autocomplete="tel">
      

    如何命名您的&lt;input&gt; 标签

    为了触发自动完成功能,请确保在 &lt;input&gt; 标记中正确命名 nameautocomplete 属性。这将自动允许在表单上自动完成。确保也有&lt;label&gt;!也可以在here 找到此信息。

    以下是如何命名您的输入:

    • 名字
      • name 使用以下任何一种:name fname mname lname
      • autocomplete 使用以下任意一种:
        • name(全名)
        • given-name(名字)
        • additional-name(中间名)
        • family-name(姓氏)
      • 示例:&lt;input type="text" name="fname" autocomplete="given-name"&gt;
    • 电子邮件
      • name 使用以下任何一种:email
      • autocomplete 使用以下任意一种:email
      • 示例:&lt;input type="text" name="email" autocomplete="email"&gt;
    • 地址
      • name 使用其中任何一个:address city region province state zip zip2 postal country
      • autocomplete 使用以下任意一种:
        • 对于一个地址输入:
          • street-address
        • 对于两个地址输入:
          • address-line1
          • address-line2
        • address-level1(州或省)
        • address-level2(城市)
        • postal-code(邮政编码)
        • country
    • 电话
      • name 使用以下任何一种:phone mobile country-code area-code exchange suffix ext
      • autocomplete 使用以下任意一种:tel
    • 信用卡
      • name 使用其中任何一个:ccname cardnumber cvc ccmonth ccyear exp-date card-type
      • autocomplete 使用以下任意一种:
        • cc-name
        • cc-number
        • cc-csc
        • cc-exp-month
        • cc-exp-year
        • cc-exp
        • cc-type
    • 用户名
      • name 使用其中任何一个:username
      • autocomplete 使用以下任意一种:username
    • 密码
      • name 使用其中任何一个:password
      • autocomplete 使用以下任意一种:
        • current-password(用于登录表格)
        • new-password(用于注册和密码更改表格)

    资源

    【讨论】:

      【解决方案2】:

      没有跨浏览器的方法可以做到这一点,浏览器要么支持 HTML5 和自动填充,要么不支持。

      要使其正常工作,您所要做的就是使用正确的输入名称,其余的由浏览器处理,而您无法访问浏览器存储的任何数据。

      <input type="text" name="fname" /> //first name
      <input type="text" name="lname" /> //last name
      <input type="text" name="email" /> //email
      //etc...
      

      FIDDLE

      根据this answer,Chrome使用的正则表达式如下:

      • 名字: "first.*name|initials|fname|first$"
      • 电子邮件:“e.?mail”
      • 地址(第 1 行): "address.*line|address1|addr1|street"
      • 邮政编码: "zip|postal|post.*code|pcode|^1z$"

      只要这些正则表达式可以匹配您的姓名,自动填充功能就可以在大多数浏览器中使用。

      【讨论】:

      • HTML5是从哪里来的,这个自动填充是不是只对HTML5有效?
      【解决方案3】:

      您可以为表单或每个表单字段添加自动完成功能。试试这个

      <form autocomplete="on">
      <input type="text" name="foo" />
      ....
      
      </form>
      

      【讨论】:

      • 嗨,抱歉,如果可能的话,你有这方面的参考吗?这是 HTML5 属性吗?
      • 是的,但这只是为了打开或关闭浏览器的自动完成功能。 w3.org/TR/2011/WD-html5-20110525/… "关闭状态表示控件的输入数据特别敏感(例如核武器的激活码)"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-27
      • 1970-01-01
      • 2017-09-10
      • 2021-04-14
      • 2010-10-21
      • 2016-03-04
      • 1970-01-01
      相关资源
      最近更新 更多