如何预填用户输入表单?

Posted

技术标签:

【中文标题】如何预填用户输入表单?【英文标题】:How to prefill the user input form? 【发布时间】:2018-10-04 07:00:41 【问题描述】:

我有一个非常基本的表格,我在其中询问用户的姓名、手机、电子邮件。我使用以下代码在这些字段中启用了自动完成功能:

<label for="frmNameA">Name</label>
<input 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">


<label for="frmPhoneNumA">Phone</label>
<input type="tel" name="phone" id="frmPhoneNumA" placeholder="+1-650-450-1212" required autocomplete="tel">

Here 是小提琴。目前,用户必须关注这些元素,然后显示建议。加载表单后,有什么方法可以预填充这些数据?我们想预填充自动完成中的第一个建议,而不是一些硬编码的值。

另外,我看到 facebook、twitter 等网站仅使用自动完成功能而不是预填充数据 - 是否有任何具体原因不预填充这些内容?

【问题讨论】:

【参考方案1】:

自动完成属性指定表单是否应该开启或关闭自动完成功能。

启用自动完成后,浏览器会根据用户之前输入的值自动完成值。

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

【讨论】:

您可以在 w3schools 上找到工作示例。这是链接w3schools.com/tags/… 我仍然需要关注输入字段并手动选择以前填充的值。我想在没有用户操作的情况下预填充这些 你的意思是刷新页面,所有之前的值都已经填充了吗?【参考方案2】:

您可以在完成时将用户值存储到localStorage,然后在页面加载时加载此值。

这样,不需要硬编码数据,也不需要存储服务器端。

// Store 
localStorage.setItem("userconfig",mail.value)

// Fill data
onload = (function()
  mail.value =   localStorage.getItem("userconfig")

)

【讨论】:

我想从自动完成中预填充 - 这不是我想先存储然后填充的东西 您不能自动补充。你需要 javascript

以上是关于如何预填用户输入表单?的主要内容,如果未能解决你的问题,请参考以下文章

Apple Pay 不会显示预填信息

如何检查表单域是不是使用 capybara 正确预填?

如何通过单独的联系表单将 HTML 输入从页面发送给用户

如何在不完整的 Django 表单字段中获取用户输入?

如何根据用户输入动态更改 django 中的表单(提交前)

脚本执行后如何保存用户在表单页面中输入的数据?