【问题标题】:Differentiating multiple forms on one site for autocomplete区分一个站点上的多个表单以实现自动完成
【发布时间】:2015-12-04 14:09:39
【问题描述】:

浏览器自动完成背后的逻辑是什么——它们如何区分一个站点甚至页面上的多个表单? 假设您有一个电子商务网站,其中包含登录名(用户/通行证)和结账时的礼品卡(礼品卡号/通行证)。如何告诉浏览器这些不是同一个字段,必须分开存储?

当然,我们可以在第二个表单上禁用自动完成,但这不是一个很好的解决方案。

是否有关于自动完成的标准?表单 ID 是存储它的关键吗? 从 Windows 10 开始,情况似乎更加复杂,这要归功于云同步功能,它可以跨浏览器同步密码和其他表单值。

谢谢!

【问题讨论】:

  • 具体是哪个浏览器/操作系统?这是关于每个输入元素上的自动完成下拉菜单,还是一些更智能的工具,如 Chrome 的自动填充?
  • 还有一些代码和代码示例对上下文有帮助

标签: html forms autocomplete


【解决方案1】:

Here's 一个很好的答案,稍微解释了浏览器如何确定自动完成

基本上,浏览器依靠输入的“名称”属性和许多其他上下文信息(类/输入类型/标签)来确定哪些字段可以使用什么(类型)信息自动完成。

这里是关于autofill html 标准的更多细节。 https://html.spec.whatwg.org/multipage/forms.html#autofill

【讨论】:

    【解决方案2】:

    如果我理解正确,您正在寻找如何打开/关闭自动完成的字段?

    您可以使用以下方式将整个表单设置为自动完成:

    <form autocomplete="on|off">
    

    您可以设置每个字段的自动完成功能,例如:

    <form action="demo_form.asp" method="get">
      First name:<input type="text" name="fname" autocomplete="on"><br>
      E-mail: <input type="email" name="email"><br>
      <input type="submit">
    </form>
    

    请注意,这只会自动完成用户已经在浏览器历史记录中的其他表单上自动完成的字段

    您可以在此处了解更多信息(甚至可以尝试一下): http://www.w3schools.com/tags/att_form_autocomplete.asp

    另请参阅有关字段特定自动完成的链接: http://www.w3schools.com/tags/att_input_autocomplete.asp

    【讨论】:

    • 不,但是谢谢。我们正在研究如何告诉浏览器在同一页面上的两个表单之间的区别,比如一个表单是用户/密码,另一个是礼品卡/密码,这样浏览器可以自动完成两者,但不会在礼品卡中填写用户/密码/pin-form 例如
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 2010-09-09
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多