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编程起步(第二课)
Feb 27 Javascript
IFrame跨域高度自适应实现代码
Aug 16 Javascript
json格式的时间显示为正常年月日的方法
Sep 08 Javascript
JavaScript立即执行函数的三种不同写法
Sep 05 Javascript
jquery中object对象循环遍历的方法
Dec 18 Javascript
全面解析标签页的切换方式
Aug 21 Javascript
jQuery动态修改字体大小的方法【测试可用】
Sep 09 Javascript
js自定义瀑布流布局插件
May 16 Javascript
jQuery序列化后的表单值转换成Json
Jun 16 jQuery
使用layui 渲染table数据表格的实例代码
Aug 19 Javascript
node.js调用C++函数的方法示例
Sep 21 Javascript
axios+Vue实现上传文件显示进度功能
Apr 14 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
php中几种常见安全设置详解
2010/04/06 PHP
php 数组的指针操作实现代码
2011/02/08 PHP
基于Zend的Captcha机制的应用
2013/05/02 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
javascript 页面只自动刷新一次
2009/07/10 Javascript
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
AngularJS使用ocLazyLoad实现js延迟加载
2017/07/05 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
vue中使用elementUI组件手动上传图片功能
2019/12/13 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
js实现html滑动图片拼图验证
2020/06/24 Javascript
Python3 能振兴 Python的原因分析
2014/11/28 Python
Python脚本实现12306火车票查询系统
2016/09/30 Python
Python 爬虫多线程详解及实例代码
2016/10/08 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
python树莓派红外反射传感器
2019/01/21 Python
纯css3实现图片翻牌特效
2015/03/10 HTML / CSS
医学生自荐信
2013/12/03 职场文书
婚前协议书范本
2014/04/15 职场文书
学校安全生产承诺书
2014/05/23 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
小学教师读书笔记
2015/07/01 职场文书
诚信考试主题班会
2015/08/17 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
小学一年级数学教学反思
2016/02/16 职场文书
Python趣味挑战之给幼儿园弟弟生成1000道算术题
2021/05/28 Python