首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在使用AJAX调用时存储到浏览器自动完成/自动填充

如何在使用AJAX调用时存储到浏览器自动完成/自动填充
EN

Stack Overflow用户
提问于 2012-02-08 21:37:22
回答 5查看 7.6K关注 0票数 28

我注意到浏览器在表单提交之前不会存储表单值,这意味着如果您使用AJAX而不是标准的表单提交,您的浏览器的自动填充永远不会被填充。有没有办法强制填充浏览器自动填充/自动完成,这样我就可以方便地使用通过AJAX提交的表单了吗?转到我的AJAX页面,每次都必须在表单字段中键入相同的内容,这是很烦人的,因为浏览器不记得它们。

我的问题与这一个几乎完全相同,只是只提供了FireFox中的一项工作,作为对该问题的公认答案。我正在寻找一个解决方案,工作在所有主要浏览器(至少Chrome,FF和IE),如果有一个。

注意:我不是在说AJAX自动完成插件,在谷歌搜索这个问题时几乎总是会弹出这个插件。我指的是您的浏览器内置的自动完成或自动填充功能,它可以帮助您通过记忆过去输入的内容来填写表单。

EN

回答 5

Stack Overflow用户

发布于 2018-04-15 06:47:35

对于那些还在试图解决这个问题的人来说,我似乎已经找到了回答

铬试图识别提交事件,即使你preventDefault并自己处理实际提交。

就这样,您需要preventDefault 提交事件,而不是单击事件。

在编写本报告时,这在Chrome、Edge和IE11上都有效(我懒得在Firefox上下载和测试它)。这是你的表格:

代码语言:javascript
运行
复制
<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中,只需这样做:

代码语言:javascript
运行
复制
$("#my-form").on("submit", function (ev) {
  ev.preventDefault();

  // Do AJAX stuff here
});

浏览器将记住您在单击“订阅”按钮时输入的任何电子邮件。

票数 4
EN

Stack Overflow用户

发布于 2013-04-11 15:11:42

我也遇到过这种情况;似乎没有很好的解决方案,当然不是跨浏览器的解决方案,但是这里有一个IE的解决方案,我还没见过有人提到:

代码语言:javascript
运行
复制
<!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

票数 3
EN

Stack Overflow用户

发布于 2013-10-16 15:49:02

使用此方法:

代码语言:javascript
运行
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9201858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档