Javascript 表单没有方法';提交';(angularjs表单自动填充问题解决方案)
我遇到了一个问题,当浏览器自动填充字段时,我的模型将不会更新。我已经选择了一个看起来像我需要的答案,但是我在实现它时遇到了困难Javascript 表单没有方法';提交';(angularjs表单自动填充问题解决方案),javascript,angularjs,Javascript,Angularjs,我遇到了一个问题,当浏览器自动填充字段时,我的模型将不会更新。我已经选择了一个看起来像我需要的答案,但是我在实现它时遇到了困难 angular.module('roomsApp.directives', []).directive('formAutofillFix', ['$timeout', function ($timeout) { return function(scope, elem, attrs) { // Fixes Chrome bug: https://groups.
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”
在网上搜索之后,导致此错误的最常见原因是输入字段名为“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>
尝试将elem变量转换/强制转换为以下角度元素
elem = angular.element(elem);
然后尝试解除绑定
刚刚遇到同样的问题,但幸运的是,chrome在自动填充时触发了一个更改事件
我的解决方案如下:
<input ng-model="invoiceAddress.firstName" ng-model-options="validatorBehavior" .... >
这样,您的模型将在更改时更新,从而在自动填充时更新 嗨,同样的问题,我尝试了@dcodesmith建议的修复,但这对我不起作用。还有其他建议吗?好的,明白了。我用以下内容替换了:
elem.unbind('submit')。submit(函数(e){
)。bind('submit',函数(e){,它现在正在工作……如果您的项目中没有加载jQuery,另一个更新。trigger
将不起作用。请改用。triggerHandler
$scope.validatorBehavior = { updateOn: 'change blur' };