ionic使用angularjs表单验证(模板验证)


Posted in Javascript onDecember 12, 2018

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>

运行效果如下:

ionic使用angularjs表单验证(模板验证)

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表示你是否没有改变过这个参数的值

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript jQuery插件练习
Dec 24 Javascript
jquery dialog键盘事件代码
Aug 01 Javascript
javascript loadScript异步加载脚本示例讲解
Nov 14 Javascript
javascript实现tab切换特效
Nov 12 Javascript
Jquery实现纵向横向菜单
Jan 24 Javascript
瀑布流的实现方式(原生js+jquery+css3)
Jun 28 Javascript
d3.js实现立体柱图的方法详解
Apr 28 Javascript
JavaScript手风琴页面制作
May 17 Javascript
微信小程序之滚动视图容器的实现方法
Sep 26 Javascript
VUE项目初建和常见问题总结
Sep 12 Javascript
小谈angular ng deploy的实现
Apr 07 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
Jun 15 Javascript
微信小程序自定义导航教程(兼容各种手机)
Dec 12 #Javascript
express express-session的使用小结
Dec 12 #Javascript
解决vue移动端适配问题
Dec 12 #Javascript
js中位运算的运用实例分析
Dec 11 #Javascript
js中的数组对象排序分析
Dec 11 #Javascript
详解Vue源码之数据的代理访问
Dec 11 #Javascript
浅谈Vue 性能优化之深挖数组
Dec 11 #Javascript
You might like
2021年最新CPU天梯图
2021/03/04 数码科技
PHP在线生成二维码代码(google api)
2013/06/03 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
php用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
YII框架常用技巧总结
2019/04/27 PHP
一段实时更新的时间代码
2006/07/07 Javascript
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
bootstrap table使用入门基本用法
2017/05/24 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
2017/06/04 Javascript
浅谈Webpack 是如何加载模块的
2018/05/24 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
vue实现学生信息管理系统
2020/05/30 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
Python实现的简单发送邮件脚本分享
2014/11/07 Python
小议Python中自定义函数的可变参数的使用及注意点
2016/06/21 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
python实现简单图片物体标注工具
2019/03/18 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
HTML5新增form控件和表单属性实例代码详解
2019/05/15 HTML / CSS
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
实习自我鉴定范文
2013/10/30 职场文书
怎样写好自我鉴定
2013/12/04 职场文书
大学生专科学习生活的自我评价
2013/12/07 职场文书
基层工作经历证明
2015/06/19 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
Python 正则模块详情
2021/11/02 Python