在不影响会话历史记录缓存的情况下关闭自动完成功能

时间:2014-08-03 14:42:00

标签: html autocomplete browser-history

我想

(1)在输入字段中输入时不向用户显示任何建议。

这可以这样做:

<input autocomplete="off">

然而,我注意到这也是

(2)禁用历史记录追踪,例如当您转到另一个站点并单击历史记录返回按钮时,输入字段将为空。

你可以在这里试试:

http://jsfiddle.net/LC53F/

只有插入第一个字段的文字才能在新页面中再次返回。

有没有办法只有效果(1),而不是(2)?

2 个答案:

答案 0 :(得分:0)

这个解决方案应该有效,但并不理想:只是分享一个想法。

我不认为你能够通过“自动完成”来保存历史记录,所以让我们尝试一些东西。

这是一个想法:历史记录基于输入名称,因此您可以使用不常见的名称关闭其他网站的自动完成功能(但仍然是常量,例如:&#39; email_fakeSuffix_194h5g48&#39; )。

然后,要从此输入的先前值关闭自动完成,您可以在每次加载页面时更改其名称(即附加一个随机数)。问题是,这样做,你也会关闭历史。

所以,主要的想法是使用一个不常见的输入名称并在提交表单之前进行更改

  • 浏览器不会保存该值,因为名称已更改

  • 如果您在未提交的情况下导航到其他页面,则值将为 仍然被设置,因为你还没有更改名称。

这是一个使用JQuery的例子(你可以使用其他任何东西,甚至是vanilla JS)

JSFiddle http://jsfiddle.net/vse9jx3r/

<强> HTML

<form>
    <input id="input1" name="email_fakeSuffix_194h5g48">
    <input name="input2">
    <input type="submit">
</form>

<强> JS

$('form').submit(function() {
    $('#input1').attr('name', 'email_fakeSuffix_194h5g48_' + Date.now());

    //SUBMIT THE FORM (MAY DO NOTHING AT ALL)

});

你可以告诉我,我是否不够清楚。

答案 1 :(得分:0)

这对我有用(使用jQuery 1.9.1):

{{1}}