我使用ng-submit提交角度表单。这是我正在处理的代码。
<form class="awesome-form" id="loginForm" name="loginForm" ng-submit="submit();" novalidate>
<div class="input-group">
<input id="loginEmailAddress" name="loginEmailAddress"
ng-model="login.loginId"
ng-pattern="/^[_a-zA-Z0-9]+(\.[_a-zA-Z0-9]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})$/"
ng-keyup = "checkType($event,'login-label');"
required="" type="text" autocomplete="on">
<label id="login-label">Email</label>
</div>
<span class="icon-close" ng-show="!loginForm.loginEmailAddress.$error.required"
ng-click="clear()"></span>
</div>
/*some other form elements come here*/
<button class="login-button-blue"
ng-disabled="!(loginForm.loginEmailAddress.$valid && loginForm.loginPassword.$valid)" type="submit">SIGN IN</button>
</form>
提交方法正在调用服务,该服务又发送http post请求。
$scope.submit = function() {
SampleService.sampleMethod(angular.toJson(request)).then(function(successData){
/**do something**/
}
}
样本服务如下:
app.service('SampleService', ['$http', '$q', function ($http, $q) {
this.sampleMethod= function (request) {
var deferred = $q.defer();
$http.post("url", request).success(function (data, status, headers, config) {
deferred.resolve(data);
}).error(function (data, status, headers, config) {
deferred.reject(data);
});
return deferred.promise;
};
}]);
成功提交表单后,我希望浏览器的原生自动填充功能能够正常运行。当我下次输入时,电子邮件地址将自动完成。
它在firefox中成功,但在chrome中不成功。我尝试了其他堆栈溢出问题中提到的几种方法。但事实证明这些解决方案毫无用处。
(Trigger autocomplete without submitting a form)
在该问题的解决方案中已经给出了一个小提琴,它在所有浏览器中都有效(http://jsfiddle.net/6cve0z98/)。但它也不适合我。
浏览器本身是问题还是我做错了?帮助我解决方案。提前谢谢。