【AngularJs】---表单验证

【AngularJs】---表单验证

1. 必填项

验证某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可:

<input type="text" required /> 


2. 最小长度
验证表单输入的文本长度是否大于某个最小值,在输入字段上使用AngularJS指令

ng-minleng= "{number}":

<input type="text" ng-minlength="5" />

3. 最大长度
验证表单输入的文本长度是否小于或等于某个最大值,在输入字段上使用AngularJS指令
ng-maxlength="{number}":

<input type="text" ng-maxlength="20" />

4. 模式匹配
使用ng-pattern="/PATTERN/"来确保输入能够匹配指定的正则表达式:

<input type="text" ng-pattern="[a-zA-Z]" />

5. 电子邮件
验证输入内容是否是电子邮件,只要像下面这样将input的类型设置为email即可:

<input type="email" name="email" ng-model="user.email" />

6. 数字
验证输入内容是否是数字,将input的类型设置为number:

<input type="number" name="age" ng-model="user.age" /> 

7. URL
验证输入内容是否是URL,将input的类型设置为 url:

<input type="url" name="homepage" ng-model="user.facebook_url" />

8. 在表单中控制变量
表单的属性可以在其所属的$scope对象中访问到,而我们又可以访问$scope对象,因此
JavaScript可以间接地访问DOM中的表单属性。借助这些属性,我们可以对表单做出实时(和
AngularJS中其他东西一样)响应。这些属性包括下面这些。
(注意,可以使用下面的格式访问这些属性。)
--formName.inputFieldName.property

  • 未修改的表单

这是一个布尔属性,用来判断用户是否修改了表单。如果未修改,值为true,如果修改过值
为false:
formName.inputFieldName.$pristine

  • 修改过的表单

只要用户修改过表单,无论输入是否通过验证,该值都返回true:
formName.inputFieldName.$dirty

  • 合法的表单

这个布尔型的属性用来判断表单的内容是否合法。如果当前表单内容是合法的,下面属性的
值就是true:
formName.inputFieldName.$valid

  • 不合法的表单

这个布尔属性用来判断表单的内容是否不合法。如果当前表单内容是不合法的,下面属性的
值为true:
formName.inputFieldName.$invalid

  •  错误

这是AngularJS提供的另外一个非常有用的属性:$error对象。它包含当前表单的所有验证
内容,以及它们是否合法的信息。用下面的语法访问这个属性:
formName.inputfieldName.$error

如果验证失败,这个属性的值为true;如果值为false,说明输入字段的值通过了验证

 eg:

<form name="myForm">
  <input name="personEmail" required type="email" ng-model="person.email"/>
  <span ng-show="!myForm.personEmail.$valid">有错</span>
  <span ng-show="myForm.personEmail.$error.required">必填</span>
  <span ng-show="myform.personEmail.$error.email">email 地址不对</span>
</form>

9. 一些有用的CSS样式
AngularJS处理表单时,会根据表单当前的状态添加一些CSS类(例如当前是合法的、未发生
变化的,等等),这些CSS类的命名和前面介绍的属性很相似。
它们包括:
  .ng-pristine {}
  .ng-dirty {}
  .ng-valid {}
  .ng-invalid {}
它们对应着表单输入字段的特定状态。
当某个字段中的输入非法时,.ng-invlid类会被添加到这个字段上。当前例子中的站点将
对应的CSS样式设置为:
input.ng-invalid {
  border: 1px solid red;
}
input.ng-valid {
  border: 1px solid green;
}

  

【DEMO】

<form name="lg_form" ng-submit="login()">
            <ion-content class="padding lg-padding ">
                <div class="list">
                    <div class="list list-inset">
                        <label class="item item-input">
                            <input type="text" placeholder="username" ng-model="user.username" ng-maxlength="8"
                                   required/>
                        </label>
                        <label class="item item-input">
                            <input type="password" placeholder="password" ng-model="user.password" ng-maxlength="8"
                                   required/>
                        </label>
                    </div>
                </div>
                <div class="padding">
                    <button ng-disabled="lg_form.$invalid"
                            class="button button-block button-large button-clear button-positive" type="submit">
                        立即登录
                    </button>
                </div>
            </ion-content>
    </form>

 提交的方法, 通过ng-submit 绑定到了controller里的login函数上。