2015-09-01 5 views
6

Я создал форму в ионно-угловой и прикладной проверки на ней. Валидации не работают должным образом. Даже все поля пустые по нажатию кнопки отправки, он вызывает функцию контроллера. Пожалуйста, помогите мне решить эту проблему.Угловая форма проверки не работает должным образом

HTML код

<ion-pane> 
<ion-header-bar class="bar-stable"> 
<h1 class="title">Register</h1> 
</ion-header-bar> 
<ion-content > 
<form name="register" ng-submit="submitDetails(user)" novalidate=""> 
    <div class="list"> 
     <label class="item item-input item-floating-label" style="position:relative;"> 
      <span class="input-label">First Name</span> 
      <input type="text" placeholder="First Name" ng-model="user.firstName" ng-required="true"> 
      <p ng-show="user.firstName.$invalid && !user.firstName.$pristine" class="help-block">You name is required.</p> 
     </label> 
     <label class="item item-input item-floating-label"> 
      <span class="input-label">Email</span> 
      <input type="email" placeholder="Email" ng-model="user.email" ng-required="true"> 
      <p ng-show="user.email.$invalid && !user.email.$pristine" class="help-block">Enter a valid email</p> 
     </label> 
     <label class="item item-input item-floating-label"> 
      <span class="input-label" >Phone no</span> 
      <input type="number" placeholder="Phone No" ng-model="user.phone" ng-minlength="10" ng-maxlength="10" ng-required="true"> 
      <span class="help-block" ng-show="user.phone.$error.required || user.phone.$error.number">Valid phone number is required</span> 
      <span class="help-block" ng-show="((user.phone.$error.minlength || user.phone.$error.maxlength) && user.phone.$dirty) ">phone number should be 10 digits</span> 
     </label> 
     <input type="submit" class="button button-royal" value="register"> 
    </div> 
</form> 
</ion-content> 
</ion-pane> 

Код контроллера

chatApp.controller('RegisterCntrl', function($scope, $stateParams) { 
    $scope.user={}; 
    $scope.submitDetails=function(user){ 
     alert("user"+user.firstName); 
    }; 
}); 
+0

Это 'нг-шоу =" user.firstName. $ Invalid' не является допустимым именем формы, это 'register' –

+1

Да Регистр является имя формы, то, что я должен сделать, чтобы валидация работать ?? @evc – Keshav

ответ

6

Это должно работать

<form name="register_form" ng-submit="submitDetails(user)" novalidate=""> 
    <div class="list"> 
     <label class="item item-input item-floating-label" style="position:relative;"> 
      <span class="input-label">First Name</span> 
      <input type="text" name="user_first_name" placeholder="First Name" ng-model="user.firstName" ng-required="true"> 
      <p ng-show="register_form.user_first_name.$invalid && !register_form.user_first_name.$pristine" class="help-block">You name is required.</p> 
     </label> 
     <!--omitted--> 
     <input type="submit" class="button button-royal" value="register"> 
    </div> 
</form> 

имя формы register_form,

<form name="register_form" ng-submit="submitDetails(user)" novalidate=""> 

Введите имя является user_first_name,

<input type="text" name="user_first_name" placeholder="First Name" ng-model="user.firstName" ng-required="true"> 

Так проверка должна пройти через эти поля сам

<p ng-show="register_form.user_first_name.$invalid && !register_form.user_first_name.$pristine" class="help-block">You name is required.</p> 

Модель не имеет $invalid или $pristine свойствами, так что не имеет смысла

Для телефонов

<input type="number" name="user_phone" placeholder="Phone No" ng-model="user.phone" ng-minlength="10" ng-maxlength="10" ng-required="true"> 
<span class="help-block" ng-show="register_form.user_phone.$error.required || register_form.user_phone.$error.number">Valid phone number is required</span> 
<span class="help-block" ng-show="((register_form.user_phone.$error.minlength || register_form.user_phone.$error.maxlength) && register_form.user_phone.$dirty) ">phone number should be 10 digits</span> 

Для дальнейших показаний, контроль this answer

+0

yes его рабочая, но ng-minlength и ng-maxlength директива, которую я применил в поле номера телефона, не работает. – Keshav

+0

Используйте тот же подход, переименуйте имя формы, затем добавьте имя ввода, затем используйте их внутри условий –

+0

Я использовал его как вы объяснили, что валидация работает, но директивы (ng-minlength и ng-maxlength) не работают. – Keshav

4

Используйте form name и input name атрибут, не ng-model

Дайте ввести имя и использовать его с именем формы.

Проверьте первый вход в следующем примере.

<label class="item item-input item-floating-label" style="position:relative;"> 
    <span class="input-label">First Name</span> 
    <input name="firstName" type="text" placeholder="First Name" ng-model="user.firstName" ng-required="true"> 
    <p ng-show="register.firstName.$invalid && !register.firstName.$pristine" class="help-block">Your name is required.</p> 
</label>