2

我正在开发一个 angularjs (v1.2.26) 应用程序。我使用 KeePass (v2.28)、chromeIPass 2.6.8 (google chrome extension) 来填写凭据。

我的登录表单有问题:Keepass 允许自动完成(强制)用户名和密码字段。

在这种情况下,angularjs 不会检测到该值并将表单视为无效(我无法连接)。 在此处输入图像描述

我尝试了一些解决方法,但这似乎每次都不起作用。关于如何解决这个问题的任何想法?


ng-controller 中使用的解决方法(并非每次都有效):

$scope.focusLogin = function() {
  // try to avoid 'form invalid' state when browser auto-complete form fields
  $('#LoginView_Password').focus();
  $('#LoginView_Password').change();
  $('#LoginView_Password').focus();
  $('#LoginView_Username').focus();
  $('#LoginView_Username').change();
  $('#LoginView_Username').focus();
};
setTimeout($scope.focusLogin, 500);
4

1 回答 1

0

由于我切换到Auth0机制,我不再有这个登录表单了。

无论如何,我发现了这个使用“触发器”(放入登录控制器)的小解决方法。如果第三方(例如keepass插件)填写表格,则每秒检查一次的示例:

  $scope.needLogin = true;
  $scope.focusLogin = function() {
    // avoid 'form invalid' state when browser auto-complete form fields
    $('#LoginView_Username').trigger('input');
    $('#LoginView_Password').trigger('input');
    if (!$scope.loginForm.$invalid) {
      // commonService.info('ok, click on login button');
      $scope.needLogin = false;
    }
    if (!$scope.needLogin) {
      return;
    }
    setTimeout($scope.focusLogin, 1000);
  };
于 2015-09-29T13:45:29.477 回答