我遇到了一个问题,当浏览器自动填充字段时,我的模型不会更新。我选择Ezekiel Victor的答案,看起来像我需要的,但我在实施它时遇到了麻烦。
angular.module('roomsApp.directives', []).directive('formAutofillFix', ['$timeout',
function ($timeout) {
return function(scope, elem, attrs) {
// Fixes Chrome bug: https://groups.google.com/forum/#!topic/angular/6NlucSskQjY
elem.prop('method', 'POST');
// Fix autofill issues where Angular doesn't know about autofilled inputs
if(attrs.ngSubmit) {
setTimeout(function() {
elem.unbind('submit').submit(function(e) {
e.preventDefault();
elem.find('input, textarea, select').trigger('input').trigger('change').trigger('keydown');
scope.$apply(attrs.ngSubmit);
});
}, 0);
}
};
});
我收到错误:
elem.unbind('submit').submit(function(e) {
在Firefox中:elem.unbind(...)。submit不是函数
在Chrome中:对象[object object]没有方法'submit'
在网上挖掘之后,导致此错误的最常见的事情是输入字段被命名为“提交”,但我没有遇到该特定问题
<form form-autofill-fix ng-submit="login()" id="login-fields">
<input form="login-fields" ng-model="userLogin" type="email" name="username" ng-required/>
<input form="login-fields" ng-model="userPassword" type="password" name="password" ng-required />
<button form="login-fields" name="login"">Login </button>
</form>
我很欣赏对此的任何见解。
参考文献:
http://victorblog.com/2014/01/12/fixing-autocomplete-autofill-on-angularjs-form-submit/
"Submit is not a function" error in JavaScript
答案 0 :(得分:0)
尝试将elem变量转换/转换为像这样的角元素......
elem = angular.element(elem);
然后尝试unbind
答案 1 :(得分:0)
刚遇到同样的问题,但幸运的是,Chrome会在自动填充时触发更改事件。
我的修复如下:
<input ng-model="invoiceAddress.firstName" ng-model-options="validatorBehavior" .... >
控制器中的validatorBehaviour是:
$scope.validatorBehavior = { updateOn: 'change blur' };
这样您的模型将在更改时更新,因此在自动填充时更新。