2016-06-06 4 views
1

My JHipster версия генератора: generator-jhipster 2.27.1форма проверки с Jhipster

Я использую show-validation для моей проверки формы. Кажется, что все работает нормально, за исключением следующего сценария.

  1. Предположим, у меня есть текстовое поле required.
  2. Введите один символ, поле станет действительным.
  3. Удалить текст, поле становится недействительным, появляется сообщение об ошибке, а группа форм для ввода становится красной.
  4. Теперь введите текст повторно. Поле становится действительным, и сообщение об ошибке исчезает, но класс has-error в группе форм еще не удален. Группа форм по-прежнему остается красной.
  5. Когда вы перейдете к второму символу , has-error теперь удален.

Это соответствующий код из form.directive.js

$inputs.each(function() { 
    var $input = $(this); 
    scope.$watch(function() {        
     return $input.hasClass('ng-invalid') && $input.hasClass('ng-dirty'); 
    }, function(isInvalid) { 
     $formGroup.toggleClass('has-error', isInvalid); 
    }); 
} 

Директива форм-проверка не сразу обновлением, но за одним изменением входного сигнала. Я не могу понять, какая часть кода нуждается в модификации.

Добавлены консольные журналы, но безрезультатно. Я предполагаю, что он имеет какое-то отношение к текстовому значению значения vis-a-vis, но не знает, как его исправить.

ответ

2

Как насчет этого?

(добавлено: ATTRS, formCtrl атра к функции связи и изменил $ watch.function - раскомментируйте грязную проверку при необходимости)

  link: function (scope, element, attrs, formCtrl) { 
      element.find('.form-group').each(function() { 
       var $formGroup = $(this); 
       var $inputs = $formGroup.find('input[ng-model],textarea[ng-model],select[ng-model]'); 

       if ($inputs.length > 0) { 
        $inputs.each(function() { 
         var $input = $(this); 
         scope.$watch(function() { 
          //inputs need to have 'name' attribute for this to work 
          return formCtrl[$input[0].name].$invalid; 
          //&& formCtrl[$input[0].name].$dirty; 
         }, function(isInvalid) { 
          $formGroup.toggleClass('has-error', isInvalid); 
         }); 
        }); 
       } 
      }); 
     } 
Смежные вопросы