【问题标题】:How to get value of input when autocompleted by ChromeChrome自动完成时如何获取输入值
【发布时间】:2017-06-19 19:35:20
【问题描述】:

我有一个简单的输入,谷歌浏览器的自动完成功能就可以启动了。

当我使用 接受建议并立即单击按钮(不按 EnterTab),然后访问 value DOM 元素只返回我手动输入的字符,而不是字段的全部内容。 jQuery也是如此,即调用$(input).val()

这里有一个minimal example 演示了这种行为。我在这里使用type="email" 输入而不是type="text" 来确保浏览器启用自动完成功能,但它的行为完全相同。

在将建议添加到您的输入(突出显示)而不是使用 后单击该字段时,也会发生同样的情况。

在 Safari 7 上出现类似问题,虽然检索值没有问题,但在我描述的第二种情况下(添加建议后单击字段)没有发出任何事件。

除了禁用自动完成(我做了)之外,有人知道如何规避这个问题吗?


更新:我打开了bug with Chromium。到现在都没有反应。

【问题讨论】:

  • 您想通过单击确定按钮获得价值?
  • 它在我的谷歌浏览器上运行。我用向下箭头 + 输入输入了第一个字母和建议,然后单击按钮
  • @PratikJoshi 是的,获取点击值就足够了
  • @Aleksandrus 我的问题是如果用户不按 Enter 键该怎么办
  • @ArturNowak ,然后什么都不做

标签: javascript jquery html google-chrome


【解决方案1】:

原来是 Chrome 中的 bug,从 43.0.2357.65 版本开始更正(尽管它仍然存在于 43.0.2357.45 中)。


截至 2017 年 6 月的更新:此问题已在 Chrome 43 中得到修复,两年后不再存在。

【讨论】:

  • 这个问题你解决了吗?
  • @DiegoRios 我已编辑我的答案以反映当前状态。
  • Chrome 版本 71.0.3578.98 在 2018 年 12 月遇到了完全相同的问题
【解决方案2】:

尝试将输入字段放入表单中。 这样输入字段不会自动填充。并强制您点击其中一项建议。

<form>
    <input id="email" type="email"/>
</form>
<button>OK</button>
<span></span>

【讨论】:

  • 我遇到的问题是在我的 Chrome(版本 36)上,单击“确定”“删除”该建议。在我的特定用例中,单击按钮将隐藏输入,因此从用户的角度来看,该值仍然是“无效”。
【解决方案3】:

在点击按钮时,在获取值之前,尝试关注该字段:

document.getElementById("textbox").focus();
var texthere = document.getElementById("textbox").value;

试试吧,我相信当你点击按钮时它会给你全部的价值。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多