我的问题是,浏览器的(IE&FF)自动完成功能不适用于我的登录表单。
我有一个带有CakePHP & jQuery的with应用程序。允许访问者在不引人注目的情况下登录/注册。登录表单位于一个div中,该div通过AJAX加载。(这样可以在不重新加载页面的情况下登录。)
浏览器会将其识别为登录字段,因为它们会在单击登录时提示我保存凭据。而且它们确实保存了用户名/密码,因为它们显示在浏览器设置中保存的用户名/密码之间。但是保存的用户名/密码永远不会自动输入。当页面加载时,它们不会显示为预先输入。当我开始输入用户名时,用户名作为建议出现,但即使您选择它,也不会在其旁边输入密码。为什么?我怎么才能让它正常工作呢?
下面是一个简单的AJAX登录表单:
http://gablog.eu/test/ajaxlogin.html
它加载以下登录表单,如果您转到下面的url,自动完成将只适用于普通表单,所以它不是表单本身的问题,而是它是AJAX加载的:http://gablog.eu/test/loginform.html
布局:
<div id="user-bar">
<script type="text/javascript">
$(function() {
$("#user-bar").load('loginform.html').html();
});
</script>
</div>
加载的视图(未登录时):
<form id="form-login" action="" onsubmit="login(); return false;">
<input type="text" id="username" name="username"/>
<input type="password" id="password" name="password"/>
<input type="submit" value="Login"/>
<div id="login-error" class="error-message"></div>
</form>
<script type="text/javascript">
function login() {
$.post('/ajax/login', $("#form-login").serialize(), function(data) {
if (data.success) {
$("#user-bar").load('userbar.html').html();
} else {
$("#login-error").html(data.message);
}
}, "json");
}
</script>
需要说明的是:我不想使用AJAX自动完成功能,我想让浏览器的自动完成功能适用于我的登录表单。这是我的表单和浏览器之间的问题。jQuery提交似乎扮演着次要的角色,因为用户名/密码是保存的。它们不是为ajax加载的HTML元素!(测试站点不使用jQuery提交)自动输入的。相关问题:browser autocomplete/saved form not work in ajax request
发布于 2010-02-19 17:11:28
自动完成,至少在Firefox中,会在页面加载时触发。之后添加内容将错失机会之窗。
登录表单很小。我会从一开始就将它包含在页面中,并考虑使用CSS隐藏它,直到需要它为止。
发布于 2010-02-16 01:21:36
如果有帮助,msdn说(在页面底部):
注意:如果满足以下两个条件:
无论Autocomplete属性是否存在或值如何,...the自动完成功能都被禁用。这句话适用于IE5、IE6、IE7和IE8。
我让有趣的部分变得更加大胆。
。
发布于 2010-02-19 16:59:18
如果您通过ajax加载表单,我不认为您可以让表单自动完成工作(从安全角度讲,我不知道它是否真的会被滥用,但脚本可以开始将字段加载到页面中以查看插入了哪些数据的事实对我来说并不太好)。
如果可以,最好的选择是在php文件中添加一个条件块,并根据用户是否登录来包含表单。如果由于某种原因您无法做到这一点,那么您可能希望尝试执行document.write()而不是ajax调用(是的,使用document.write是很难看的:)
https://stackoverflow.com/questions/2267543
复制相似问题