好吧,我整个上午都在努力解决这个问题,尽管事实上这几年似乎已成为一个问题,但我找不到一个有效的解决方案。我已经看到Stack Overflow上的其他人问这个问题,但他们都没有工作答案。
我的Angular应用程序的登录表单工作正常,但Chrome或Opera中不会弹出记住密码对话框。它在Firefox中有效。我明白为什么它不起作用,但我的用户抱怨,我需要解决它。我该怎么办?
<form name="loginForm" ng-submit="login(user)">
<div class="input-group">
<input type="email" name="email" class="form-control" placeholder="Email" ng-model="user.email">
</div>
<div class="input-group">
<input type="password" name="password" class="form-control" placeholder="Password" ng-model="user.password">
</div>
<button type="submit" class="btn btn-default">Login</button>
</form>
编辑: 好的,从几个不起作用的不同答案中,我能够拼凑出最终做到的东西,这只是将它变成一个完全正常的HTML表单,其中按钮是type =“submit”然后简单地放一个jQuery .click命令在我的javascript中调用登录功能。所以基本上,完全忽略了Angular的做法,这让我成为一只悲伤的熊猫。 : - \ Opera仍然无法正常工作,但我不在乎我的想法。
答案 0 :(得分:0)
这是来自Timothy E. Johansson's blog的代码。我不相信。
app.directive("ngLoginSubmit", function(){
return {
restrict: "A",
scope: {
onSubmit: "=ngLoginSubmit"
},
link: function(scope, element, attrs) {
$(element)[0].onsubmit = function() {
$("#login-login").val($("#login", element).val());
$("#login-password").val($("#password", element).val());
scope.onSubmit(function() {
$("#login-form")[0].submit();
});
return false;
};
}
};
});
$scope.login = function(submit) {
$scope.user = {
login: $("#login").val(),
password: $("#password").val()
};
function ajaxCallback() {
submit();
}
return false;
};
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<form name="login-form" id="login-form" method="post" action="" style="display: none;">
<input name="login" id="login-login" type="text">
<input name="password" id="login-password" type="password">
</form>
<form name="login-form" autocomplete="on" ng-login-submit="login">
<input id="login" name="login" type="text" autocomplete="on">
<input id="password" name="password" type="password" autocomplete="on">
</form>
&#13;
答案 1 :(得分:0)
使用AngularJS并且没有jQuery的解决方案:
<form action="/" method="post" onsubmit="return false;">
<input type="text" name="username" autocomplete="on" id="email" ng-model="user.email">
<input type="password" id="password" name="password" autocomplete="on" ng-model="user.password">
<button type="submit" ng-click="login()">Submit</button>
</form>
<强> Explantion 强>
您的action
代码中应包含form
属性,button
属性应具有type=submit
属性。要阻止重新加载页面,请将onsubmit="return false;"
添加到form
标记。简单:)