Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 关闭自动完成而不影响会话历史缓存_Html_Autocomplete_Browser History - Fatal编程技术网

Html 关闭自动完成而不影响会话历史缓存

Html 关闭自动完成而不影响会话历史缓存,html,autocomplete,browser-history,Html,Autocomplete,Browser History,我想 (1) 在输入字段中键入时不向用户显示任何建议 可以这样做: <input autocomplete="off"> 但是我注意到这也 (2) 禁用历史记录更改,例如,当您转到另一个站点并单击历史记录后退按钮时,输入字段将为空 您可以在这里尝试: 只有插入到第一个字段中的文本才能进入新页面并再次返回 有没有办法只起作用(1),而不起作用(2)?这个解决方案应该有效,但并不理想:只是分享一个想法。 我认为你不能用“自动完成”来保存历史,所以让我们试着做点什么吧 这里有一个想

我想

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

可以这样做:

<input autocomplete="off">

但是我注意到这也

(2) 禁用历史记录更改,例如,当您转到另一个站点并单击历史记录后退按钮时,输入字段将为空

您可以在这里尝试:

只有插入到第一个字段中的文本才能进入新页面并再次返回


有没有办法只起作用(1),而不起作用(2)?

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

我认为你不能用“自动完成”来保存历史,所以让我们试着做点什么吧

这里有一个想法:历史记录基于输入名称,因此您可以使用一个不常见的名称(但仍然是常量,例如:“email\u fakeSuffix\u 194h5g48”)从其他站点关闭自动完成功能

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

因此,主要思想是使用一个不常见输入的名称,并在提交表单之前更改该名称

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

  • 如果您导航到另一个页面而不提交,则该值将 仍然无法设置,因为您尚未更改名称

下面是一个使用JQuery的示例(您可以使用其他任何东西,甚至可以使用vanilla JS)

JSFiddle

HTML

<form>
    <input id="input1" name="email_fakeSuffix_194h5g48">
    <input name="input2">
    <input type="submit">
</form>
如果我不够清楚,您可以告诉我。

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


你解决了这个问题吗?在同一问题上苦苦挣扎。挺烦人的@Danield这是否解决了原始问题的两个方面?
$('form').submit(function() {
    $('#input1').attr('name', 'email_fakeSuffix_194h5g48_' + Date.now());

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

});
$(function(){
    $('input[type=text]').prop('autocomplete','off');

    $('#formid').on('submit', function(e){
        $('input[type=text]').removeProp('autocomplete');
    });
});