2015-07-08 5 views
2

Я разрабатываю приложение angularjs (v1.2.26). И я использовал KeePass (v2.28), chromeIPass 2.6.8 (расширение google chrome) для заполнения учетных данных.keepass и angularjs: форма входа не имеет валидации

У меня возникла проблема с формой входа: Keepass разрешает автоматическое заполнение (обязательное) полей имени пользователя и пароля.

В этом случае angularjs не обнаруживают значение и принимают форму как недействительным (я не могу подключиться). enter image description here

Попытайтесь немного обходным путем, но это кажется неработоспособным каждый раз. Любая идея о том, как это решить?


обходной путь используется в нг-контроллера (не работает каждый раз):

$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); 

ответ

0

Так как перейти к Auth0 механизма, я не имеют этого форму входа больше.

В любом случае, я нашел это небольшое обходное решение, используя «триггер» (чтобы ввести контроллер входа). Пример, который проверяет каждую секунду, если третья сторона (например, keepass plugin) заполняет форму:

$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); 
    };