2

Я пытаюсь проверить угловое ua typeahead (https://angular-ui.github.io/bootstrap/). Моя проблема заключается в том, что моя функция проверки срабатывает при размытии, однако действие выбора опции из раскрывающегося списка считается размытым, поэтому моя функция запускается дважды, один раз, когда они выбирают из раскрывающегося списка и снова, когда они покидают поле ,AngularUI Typeahead запускает функцию ng-blur дважды

В первый раз он выдает ошибку, так как он проверяет неполное поле до того, как пользователь выбрал нужное поле. Затем он снова запускается и завершает проверку, когда они фактически покидают поле.

Я хочу пропустить проверку, которая происходит при выборе из раскрывающегося списка, поэтому ТОЛЬКО проверять, как пользователь полностью покинул поле. Я попытался выполнить функцию, используя typeahead-on-select, но не работал так, как я надеялся, я думаю, что это использование для чего-то другого, но скажите мне, если я ошибаюсь.

Проверка проверяет, чтобы увидеть, если значение в поле соответствует тому, что находится в списке, который был извлечен на нагрузке:

$scope.validateNumber = function() { 
       for(var i = 0; i < $scope.myList.length; i++) { 
        console.log($scope.myForm.mynumber.$viewValue); 
        console.log($scope.myList[i].myfield); 
        if ($scope.myForm.mynumber.$viewValue !== $scope.myList[i].CustNo) { 
         console.log('they do NOT match!'); 

         $scope.myForm.mynumber.$setValidity("valid", false); 

        } 
        else{ 
         console.log('they do match!'); 
         $scope.myForm.mynumber.$setValidity("valid", true); 
         break; 
        } 
       } 
      }; 

Вот шаблон для машинописного. Как вы можете видеть, я вызываю функцию выше, используя ng-blur. Я не могу использовать ng-model-options для размытия, потому что тогда typeahead не будет работать, так как он должен обновляться по мере изменения модели.

      <input othervalidationdirective 
          type="text" 
          class="form-control input-sm" 
          id="mynumber" 
          name="mynumber" 
          ng-model="myinfo.myfield" 
          ng-change="otherfield = null" 
          ng-blur="validateNumber()" 
          uib-typeahead="option as option.MyValue for option in myList | filter:$viewValue | limitTo:8" 
          typeahead-template-url="/tpl.html" 
          typeahead-loading="loading" 
          typeahead-on-select="onSelect($item, 10)" 
          typeahead-min-length="2" 
          typeahead-no-results="noResults" 
          required> 

ответ

-1

добавить таймаут в функцию onBlur.

function onBlurFunction(){ 
    $timeout(function(){ 
    //some code 
    }, 300); 
}; 
Смежные вопросы