ionic使用angularjs表单验证(模板验证)
1什么是模板验证
顾名思义模板验证就是通过一些angularjs的属性来在html标签中验证,为了往模板驱动表单中添加验证机制,你要添加一些验证属性,就像原生的 html 表单验证器。 angular 会用指令来匹配这些具有验证功能的指令。每当表单控件中的值发生变化时,angular 就会进行验证,并生成一个验证错误的列表(对应着 invalid 状态)或者 null(对应着 valid 状态)。
2示例
这是我写的一个小demo,这种验证方式无需写js代码全部在标签 里使用angularjs的属性,其他地方也无需引入angular forms库,因为ionic会自动默认引入。
<header [title]="title"></header> <ion-content scroll="false"> <!--<form>--> <ion-item> <ion-input type="text" class="form-control" name="username" #username="ngmodel" required maxlength="10" minlength="6" placeholder="用户名" [(ngmodel)]="user.username" ></ion-input> </ion-item> <p>ahdasidhasidashdudi</p> <ion-item> <ion-input type="password" class="form-control" name="password" #password="ngmodel" required maxlength="16" minlength="6" placeholder="密码" [(ngmodel)]="user.password"></ion-input> </ion-item> <ion-item> <ion-label>记住密码</ion-label> <ion-toggle [(ngmodel)]="pepperoni"></ion-toggle> </ion-item> <button ion-button block (click)="login()">登录</button> <ion-item> <button ion-button icon-start outline (click)="goregistered()"> 去注册 </button> <button ion-button icon-end outline> 忘记密码 </button> </ion-item> <h1 class="errormessage">{{promptmessage}}</h1> <span *ngif="username.invalid && (username.dirty || username.touched)" class="errormessage">用户名必须为6到10位</span> <span *ngif="password.invalid && (password.dirty || password.touched)" class="errormessage"> 密码必须为6-16位 </span> <!--</form>--> </ion-content>
运行效果如下:
3核心属性
可以看到[(ngmodel)]="user.username"作用是绑定了我们在ts文件中定义的变量。
#username="ngmodel"的作用是把我们绑定的模型值命名成username,变成了一个formcontrol对象,这里不必纠结下节会讲。
required 验证是否为空 maxlength="10" 最大长度 minlength="6"最小长度。这些都是我们需要验证的条件。
*ngif="username.invalid && (username.dirty || username.touched)"
*ngif标签等于true时将错误信息显示出来username.invalid表示验证不合法返回true,username.dirty 判断是否改变了这个参数的值,username.touched表示是否有碰过表单,作用在于,刚打开表单页面是,里面参数都是空的,但无需显示错误信息。
进入model.d.ts文件看到部分源码如下
/** * a control is `valid` when its `status === valid`. * * in order to have this status, the control must have passed all its * validation checks. */ readonly valid: boolean; /** * a control is `invalid` when its `status === invalid`. * * in order to have this status, the control must have failed * at least one of its validation checks. */ readonly invalid: boolean;
valid属性表示参数值校验后结果不通过为false,通过为true。
invalid则表示参数值校验不通过为true,通过为false。
/** * a control is `dirty` if the user has changed the value * in the ui. * * note that programmatic changes to a control's value will * *not* mark it dirty. */ readonly dirty: boolean; /** * a control is marked `touched` once the user has triggered * a `blur` event on it. */ readonly touched: boolean;
dirty表示你是否没有改变过这个参数的值
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 不使用加减乘除符号的四则运算
推荐阅读
-
ionic+AngularJs实现获取验证码倒计时按钮
-
wicket基础应用(1)--使用wicket对表单中的数据进行验证
-
WTForms表单验证的基本使用
-
SpringBoot表单验证(注解验证)@Validated使用
-
使用vue自定义指令开发表单验证插件validate.js
-
vue.js表单验证插件(vee-validate)的使用教程详解
-
使用vue自定义指令开发表单验证插件validate.js
-
vue.js表单验证插件(vee-validate)的使用教程详解
-
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
-
spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)