使用AngularJS和ng-submit记住密码。

23 浏览
0 Comments

使用AngularJS和ng-submit记住密码。

在AngularJS单页应用程序中使用ng-submit时,如何使浏览器提示用户记住密码。

我的表单:

有什么想法吗?


更新

我刚刚添加了action来让浏览器识别表单并欺骗它记住密码。(显然没有起作用。)没有action的情况下,表单可以正常工作。 onsubmit="return false;" 防止执行action。只有ng-submit在起作用。

0
0 Comments

原因:该问题的出现是因为在表单的HTML代码中存在一些混淆。在表单被提交时,你想让它跳转到"/#/dashboard/login"这个页面,还是执行"ng-submit"中的"login()"方法?目前情况是,浏览器会忽略"ng-submit",而选择执行表单的action属性。如果你想让它跳转到"/#/dashboard/login"作为一个新页面,只需移除"ng-submit"和"onsubmit"属性即可,这样它会像正常情况下一样工作。如果你想执行"ng-submit"中的"login()"方法,则需要移除"action"和"onsubmit"属性。Angular会自动阻止表单的提交,当一个带有ng-submit的表单没有action属性时。通过这种方式,浏览器不会提示是否记住密码,因为表单实际上没有被提交到任何地方。我猜这是浏览器还没有跟上单页面应用程序的时代的一个领域,在我所知道的范围内,没有直接的解决方法。

解决方法:一个解决方法是在HTML中添加一个隐藏的表单,将用户名和密码设置为与用户在主表单中输入的相同,并在调用"ng-submit"的同时将该隐藏表单提交到一个iframe中。可以参考这个链接(How can I get browser to prompt to save password?)了解如何实现这个方法的更多细节。

我只是添加了action属性,使浏览器识别该表单并欺骗它记住密码。没有action属性时表单也可以工作。onsubmit="return false;"防止执行action。只有ng-submit在起作用。

0
0 Comments

在AngularJS中使用ng-submit进行密码记忆的问题出现的原因是没有在输入字段中添加name属性。解决方法是在输入字段中添加name属性。具体代码如下:



在问题中的代码中,确实没有添加name属性。如果没有name属性,无论是使用JS生成的表单还是普通表单,都无法完成自动填充。

0
0 Comments

问题是动态生成的登录表单。将表单放入index.html后,它按预期工作。我猜这是一个安全问题。

然后出现的问题是自动填充时ngModels没有得到更新。经过一些搜索,我找到了解决该问题的方法这里。在AngularJS 1.2+中,这个问题应该已经解决了。

0