文本输入字段不使用chrome字段历史记录

时间:2016-08-12 01:46:31

标签: javascript html angularjs google-chrome

在常规文字输入字段中,我希望通过双击来查看我在Chrome中输入该字段的历史记录。

我们有一些使用Angular JS在页面上呈现的字段。但是,他们从未拥有任何历史记录项,双击从不显示任何结果。

在简短的测试中,似乎添加name属性并不能恢复此功能。

这是因为该字段从未通过表单元素正式提交吗?如果是这样,如何解决这个问题呢?

我在谷歌上找到的关于这个问题的所有结果都与逆情况有关,其中" off"被忽略了。

编辑:这是一个例子。如果我发送POST请求,我可以将值添加到历史记录中,但不能添加到不在表单中并提交的字段:https://jsfiddle.net/gtuzy4p2/2/

这里还有一个指向规范的链接,详细说明了如何使用该属性,但没有说明浏览器应该如何保存值。 https://html.spec.whatwg.org/multipage/forms.html#autofill

1 个答案:

答案 0 :(得分:1)

正如您所注意到的那样,规范没有说明浏览器应该如何以及何时自动记住表单值。这意味着浏览器可以以他们想要的任何方式执行,并且您不能依赖于特定的行为。在这种情况下,Chrome和许多其他浏览器会将提交表单作为保存输入值的唯一线索。

如果您想确保某种行为,请查看datalist element。这是一个示例,直接从链接的Wiki页面复制:



<label>Choose a browser from this list:
<input list="browsers" name="myBrowser" /></label>
<datalist id="browsers">
  <option value="Chrome">
  <option value="Firefox">
  <option value="Internet Explorer">
  <option value="Opera">
  <option value="Safari">
  <option value="Microsoft Edge">
</datalist>
&#13;
&#13;
&#13;

使用JavaScript,您可以编写自己的逻辑,将先前输入的值存储到local storage中,然后在稍后的页面加载时使用这些值动态填充datalist。支持datalist的大多数(如果不是全部)浏览器也会为其元素执行自动完成,如果没有,用户只需从下拉列表中选择一个。