我注意到浏览器在表单提交之前不会存储表单值,这意味着如果您使用AJAX而不是标准的表单提交,您的浏览器的自动填充永远不会被填充。有没有办法强制填充浏览器自动填充/自动完成,这样我就可以方便地使用通过AJAX提交的表单了吗?转到我的AJAX页面,每次都必须在表单字段中键入相同的内容,这是很烦人的,因为浏览器不记得它们。
我的问题与这一个几乎完全相同,只是只提供了FireFox中的一项工作,作为对该问题的公认答案。我正在寻找一个解决方案,工作在所有主要浏览器(至少Chrome,FF和IE),如果有一个。
注意:我不是在说AJAX自动完成插件,在谷歌搜索这个问题时几乎总是会弹出这个插件。我指的是您的浏览器内置的自动完成或自动填充功能,它可以帮助您通过记忆过去输入的内容来填写表单。
发布于 2018-04-15 06:47:35
对于那些还在试图解决这个问题的人来说,我似乎已经找到了回答。
铬试图识别提交事件,即使你preventDefault并自己处理实际提交。
就这样,您需要preventDefault
提交事件,而不是单击事件。
在编写本报告时,这在Chrome、Edge和IE11上都有效(我懒得在Firefox上下载和测试它)。这是你的表格:
<form method="POST" id="my-form">
<label>Email</label>
<input autocomplete="email" type="email" name="email">
<button type="submit">Subscribe</button>
</form>
注意autocomplete
属性。这些都是您可以用于可能值的autocomplete
。
在JavaScript中,只需这样做:
$("#my-form").on("submit", function (ev) {
ev.preventDefault();
// Do AJAX stuff here
});
浏览器将记住您在单击“订阅”按钮时输入的任何电子邮件。
发布于 2013-04-11 15:11:42
我也遇到过这种情况;似乎没有很好的解决方案,当然不是跨浏览器的解决方案,但是这里有一个IE的解决方案,我还没见过有人提到:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<SCRIPT>
function subForm()
{
window.external.AutoCompleteSaveForm(f1);
f1.submit();
}
</script>
</HEAD>
<BODY>
<FORM id=f1>
User ID : <input type=text name=id></input><br>
Password :<input type=password name=pw></input><br>
E-mail :<input type = text VCARD_NAME = "vCard.Email"> <br>
<input type=button value=submit onclick="subForm()">
</FORM>
</BODY>
</HTML>
来自:http://support.microsoft.com/kb/329156
发布于 2013-10-16 15:49:02
使用此方法:
AutoCompleteSaveForm = function(form){
var iframe = document.createElement('iframe');
iframe.name = 'uniqu_asdfaf';
iframe.style.cssText = 'position:absolute; height:1px; top:-100px; left:-100px';
document.body.appendChild(iframe);
var oldTarget = form.target;
var oldAction = form.action;
form.target = 'uniqu_asdfaf';
form.action = '/favicon.ico';
form.submit();
setTimeout(function(){
form.target = oldTarget;
form.action = oldAction;
document.body.removeChild(iframe);
});
}
用ie10,ff最新,铬最新测试
测试自己:http://jsbin.com/abuhICu/1
https://stackoverflow.com/questions/9201858
复制相似问题