嘿,我正在开发一个具有登录对话框的Web应用程序,其工作方式如下:
<form>- 用户/通过AJAX提交这是问题所在:浏览器从不提供通常的"保存此密码?是/从不/不立即"提示它为其他网站提供的.
我尝试使用"autocomplete ='on'" 包装<div>in <form>标签,但这没有任何区别.
是否可以让浏览器提供存储密码而无需重新修改我的登录流程?
谢谢Eric
ps添加到我的问题,我肯定使用存储密码的浏览器,我从来没有点击"永远不会这个网站"...这是一个技术问题,浏览器没有检测到它是一个登录表单,而不是操作员错误:-)
这与我在这里问的问题有关: 如何让浏览器提示保存密码?
这是问题:我无法让我的浏览器提示我保存我正在开发的网站的密码.(我说的是有时当你在Firefox上提交表单时出现的栏,上面写着"记住yoursite.com的密码?是/现在/从不")
这是非常令人沮丧的,因为Firefox(以及大多数其他现代浏览器,我希望以类似的方式工作)的这一功能似乎是一个谜.这就像浏览器所做的一个神奇技巧,它会查看您的代码,或者您提交的内容,或者某些东西,如果它"看起来"像一个带有用户名(或电子邮件地址)字段和密码字段的登录表单,它提供保存.
除非在这种情况下,在他们使用我的登录表单后,它没有向我的用户提供该选项,这让我很疯狂.:-)
(我检查了我的Firefox设置 - 我没有告诉浏览器"从不"这个网站.它应该是提示.)
Firefox使用什么启发式来了解何时应该提示用户保存?这应该不难回答,因为它就在Mozilla源代码中(我不知道在哪里看,否则我会尝试自己挖掘它).我也没有幸运地从Mozilla开发者那里找到博客文章或其他类似开发人员的说明.
(我会很好地回答这个问题用于Safari或IE;我会想象所有浏览器都使用非常相似的规则,所以如果我能在其中一个中使用它,那么它将适用于其他浏览器.)
(*请注意,如果您对我的回答与cookie,加密或其他任何关于我如何在我的本地数据库中存储密码的问题有关,很可能你误解了我的问题.:-)
将焦点设置为动态加载的DIV中的特定字段的正确方法是什么?
$("#display").load("?control=msgs"); // loads the HTML into the DIV
$('#display').fadeIn("fast"); // display it
$("tex#header").focus(); // ?? neither that
$("input#header").focus(); // ?? nor that
$('#display', '#header').focus() // ?? nor that
$("#header").focus(); // ?? nor that works
Run Code Online (Sandbox Code Playgroud)
将以下HTML提取到displayDIV中:
<div id="display">
<form id="newHeaderForm" class="dataform" action="/" method="post">
<input id="to" type="hidden" value="22" name="to"/>
<dl>
<dt>Header</dt>
<dd>
<input id="header" class="large" type="text" name="header" value="" maxlength="128"/>
</dd>
</form>
</div>
Run Code Online (Sandbox Code Playgroud)
非常感谢!
我注意到在提交表单之前浏览器不存储表单值,这意味着如果您使用的是AJAX而不是标准表单提交,则不会填充浏览器的自动填充.有没有办法强制填充你的浏览器自动填充/自动完成,以便我可以通过AJAX提交的表单方便吗?进入我的AJAX页面并且每次都必须在表单字段中输入相同的内容是很烦人的,因为浏览器不记得它们.
我的问题几乎与此问题完全相同,只是在FireFox中只提供了一个解决方案,作为该问题的可接受答案.我正在寻找适用于所有主流浏览器(至少Chrome,FF和IE)的解决方案(如果有的话).
注意:我不是在谈论AJAX自动完成插件,这是在谷歌搜索这个问题时几乎总是弹出的.我在谈论您的浏览器的内置自动完成或自动填充,它可以帮助您通过记住您过去输入的内容来填写表单.
我正在使用AJAX在我的登录页面上进行快速输入验证.如果一切正确,则重定向用户.
这是代码:
$(form).submit(function () {
$.post($(this).attr('action'), $(this).serialize(), function (data) {
if (data.status == 'SUCCESS') {
window.location = data.redirectUrl;
}
}
...
Run Code Online (Sandbox Code Playgroud)
它适用于所有浏览器.但是Chrome中存在问题.它不提供保存密码.
当JavaScript关闭时,密码会被保存,因此问题肯定是重定向到新位置.
我该如何解决这个问题?
很难在搜索引擎中搜索关键字的任意组合,因为大多数热门开发者使用它需要ajax自定义自动完成.
大多数开发人员搜索自定义自动完成以从ajax获取db的结果,或者由于安全原因如何禁用浏览器自动完成,或者他们想要使用其他自动完成扩展程序.
但是我不是在谈论自动完成.我发现简单的普通浏览器自动完成或浏览器保存的形式IE或FF,在填写文本框中的文本时将作为下拉列表的最近选择.
在登录表单中填写用户名和密码等表单非常简单.提交表单后(表单数据发布)浏览器将保存自动完成或FF中的事件将要求保存密码.
现在,考虑通过ajax提交的登录.表单数据不会由IE或FF自动保存,因为表单不是通过post方法发送的.我很确定这是因为ajax vs post方法.
像DotNetNuke这样的CMS使用这种方式,我很难输入用户名和密码进行5用户登录以进行开发,事件我想让用户在浏览器中保存自己的表单数据而不需要任何自定义或扩展程序.通过另一个示例,用户可以查看和使用相同的电子邮件来填充跨网站或域的任何电子邮件表单.
如何解决这个问题?您有没有建议哪些关键字更适合搜索?
CallMeLaNN
我在我的网络应用程序中使用以下登录表单.它在IE7,FF3.6和Chrome7.0中运行良好.除了Chrome似乎没有将此表单识别为登录表单,因此不提供我保存用户名/密码.FF和IE确实让我记住用户名/密码.
这是表格:
<form name="login_form" id="login_form" action="" method="POST" onsubmit="javascript:handleFunction('action_login', document.getElementById('user_name_id').value, document.getElementById('password_id').value); return false;">
<div class="login_line">name<input name="user_name" id="user_name_id" size="16" maxlength="16" value= "" type="text"></div>
<div class="login_line">password<input name="password" id="password_id" size="16" maxlength="16" type="password"></div>
<div class="login_line"><input type=submit class="icon icon_accept" value="login"></div>
</form> <!-- login_form -->
Run Code Online (Sandbox Code Playgroud)
编辑:我使用jquery(不一致,你可以看到),qTip(显示任何登录错误)和Xajax(作为ajax框架).handleFunction如下:
function handleFunction (functionName)
{
// remove any static qtip from screen
if ( $('#qtip_close_button').length )
{
// click on close button of qtip
$('#qtip_close_button').click();
}
// remove the first argument from the arguments list
var argArray = $.makeArray(arguments).slice(1);
xajax.request({ xjxfun : …Run Code Online (Sandbox Code Playgroud) 你好开发人员我很新来反应和 js 我被困在这个问题上任何帮助将不胜感激,我在反应中编码了一个基本表单,当用户单击登录并验证凭据时,它会从用户那里获取输入并验证然后浏览器应该询问用户是否要在浏览器内存中保存密码。
HTML:
<form onSubmit={this.SignmeIn} autoComplete="on" >
<div className="form-group">
<label htmlFor="email">email</label>
<input type="email" className="form-control" name="email" id="email" placeholder="Email" required="" ref="email" />
</div>
<div className="form-group">
<label htmlFor="password">password</label>
<input type="password" className="form-control" name="password" id="password" placeholder="Password" required="" ref="password" />
<span id="ErrorMessage"></span>
</div>
<div className="form-group">
<button type="submit" className="btn btn-default btn-lg">sign in</button>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
这是提交表单时调用的 SignmeIn 函数
SignmeIn: function (e) {
e.preventDefault();
var formData = {
"email": this.refs.email.value,
"password": this.refs.password.value
}
$
.ajax({
username:$('input[name=email]').val(),
password:$('input[name=password').val(),
type: 'POST',
url: url + '/signin',
data: formData
})
.done(function (data) …Run Code Online (Sandbox Code Playgroud) 我有一个简单的电子邮件/密码HTML表单,我希望chrome提示您保存密码。我不知道为什么它不会要求它。这是代码:
<form name="loginForm" action="">
E-Mail:<br><input type="email" name="email" required placeholder="E-mail"/><br>
Password:<br><input id="pwdInputBox" type="password" name="password" required/><br>
<input id="loginFormSubmitButton" type="button" value="Login" onclick="loginFormHandler();"/>
</form>
Run Code Online (Sandbox Code Playgroud)
有人能帮我吗?