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 相关文章推荐
jQuery的Ajax时无响应数据的解决方法
May 25 Javascript
jquery提交form表单时禁止重复提交的方法
Feb 13 Javascript
javascript 终止函数执行操作
Feb 14 Javascript
javascript面向对象特性代码实例
Jun 12 Javascript
用svg制作富有动态的tooltip
Jul 17 Javascript
html+js实现简单的计算器代码(加减乘除)
Jul 12 Javascript
react-router实现跳转传值的方法示例
May 27 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
Apr 18 Javascript
VuePress 快速踩坑小结
Feb 14 Javascript
vue-router跳转时打开新页面的两种方法
Jul 29 Javascript
js实现移动端tab切换时下划线滑动效果
Sep 08 Javascript
jquery简易手风琴插件的封装
Oct 13 jQuery
微信小程序自定义导航教程(兼容各种手机)
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
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
JavaScript使用过程中需要注意的地方和一些基本语法
2010/08/26 Javascript
浅析Javascript使用include/require
2013/11/13 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
js实现简单锁屏功能实例
2015/05/27 Javascript
JS实现状态栏跑马灯文字效果代码
2015/10/24 Javascript
JavaScript File分段上传
2016/03/10 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
浅谈Vue-cli 命令行工具分析
2017/11/22 Javascript
javascript中UMD规范的代码推演
2018/08/29 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
2018/11/10 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
vue中使用elementUI组件手动上传图片功能
2019/12/13 Javascript
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
python 生成图形验证码的方法示例
2018/11/11 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
国际象棋商店:The Chess Store
2018/07/09 全球购物
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
优秀村官事迹材料
2014/01/10 职场文书
教师党员群众路线教育实践活动心得体会
2014/11/04 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
单位委托函范文
2015/01/29 职场文书
信息技术课教学反思
2016/02/23 职场文书
Python如何用re模块实现简易tokenizer
2022/05/02 Python