Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 表单没有方法';提交';(angularjs表单自动填充问题解决方案)_Javascript_Angularjs - Fatal编程技术网

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' };