2016-11-11 4 views
0

Я использую мастер шагов AngularJS и внутри формы для первого шага. Мне нужны ошибки проверки, чтобы появляться, когда использование пытается попасть в submit. Сейчас у меня есть следующий:Ошибка AngularJS при отправке

<span class="error" ng-show="user.validate.step1.firstname.$invalid">Required Field</span> 

Но ошибка показывает, когда я первый Гото шага и когда я начинаю вводить в поле он уходит, я хотел бы, чтобы появиться, когда пользователь пытается ударить представить, не тогда, когда они впервые достигли этого шага. У меня уже есть это, чтобы указать обязательные для заполнения поля

<span class="error">*</span> 

Вот полный код:

<form name="user.validate.step1" novalidate> 
       <div class="container"> 
        <div class="row"> 
         <div class="col-md-6"> 
          <div class="form-group"> 
           <label for="firstname" class="col-md-4 form-label">First Name:</label> 
           <div class="col-md-8"> 
            <div class="input-group"> 
             <input class="form-control" type="text" name="firstname" ng-model="user.firstname" value="{{user.firstname}}" ng-blur="blur1=true" required /> 
             <span class="error" ng-show="user.validate.step1.firstname.$invalid">*</span> 
            </div> 
           </div> 
          </div> 
</div> 
</div> 
</div> 
</form> 

иметь в виду, у меня есть более чем один вход в такой форме.

ответ

0

Добавить валидацию с помощью ng-click="validateInputs()" и создать var invalidEntry и функцию validateInputs(), чтобы проверить, действительно ли введен вход или нет. Что-то вроде этого:

var inputs = [inputModel1,inputModel2,inputModel3]; 

function validateInputs(){ 
    invalidEntry = false; 
    for(e in inputs){ 
     if(CheckInvalid(inputs[e])){ 
      invalidEntry = true; 
      return; 
     } 
    } 

} 

function CheckValid(string){ 
    if(string == "" || string === null || string === undefined){ 
     return true; 
    } else { 
     return false; 
    } 
} 

Кнопку Submit:

<button ng-click="validateInputs()">Submit</button> 

И продолжительность:

<span class="error" ng-show="invalidEntry">Required Field</span> 

И входы должны выглядеть следующим образом:

<input type="text" ng-model="inputModel1"></input> 
<input type="text" ng-model="inputModel2"></input> 
<input type="text" ng-model="inputModel3"></input> 
+0

Теперь у меня есть несколько входов, как 10 из них, я должен сделать это для каждого входа? Там должен быть лучший способ. – user979331

+0

Я добавляю параметр к функции под названием 'stringModel' для передачи значения ввода и проверки правильности строки. Вы можете добавить дополнительную проверку, чтобы увидеть, «stringModel == null» или 'undefined' – driconmax

+0

Я снова проверил, что вы это говорите, и исправил код. – driconmax

0

Вы должны изменить ngПоказать следующим образом:

ng-show="user.validate.step1.firstname.$invalid && !user.validate.step1.firstname.$pristine" 

Проверить эту статью блок AngularJS Form Validation: Only Showing Errors After Submitting the Form

+0

Это не работает, ошибка по-прежнему отображается, когда я впервые перешел к шагу – user979331

+0

там, как маленькая опечатка во второй части, я исправил ее - ** &&! User.validate.step1.firstname. $ Pristine **, mind **. $ pristine ** (точка) – shershen

+0

Я пробовал ваш новый код, ошибка не появляется, когда я впервые перешел на страницу, но когда я попытаюсь перейти к следующему шагу, и он не показывает ошибку ввода – user979331