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实现无刷新更新数据的详细步骤 asp
Dec 26 Javascript
js hover 定时器(实例代码)
Nov 12 Javascript
深入理解JavaScript编程中的同步与异步机制
Jun 24 Javascript
jQuery validate插件实现ajax验证重复的2种方法
Jan 22 Javascript
Google 地图控件集详解及实例代码
Aug 06 Javascript
第一次接触神奇的Bootstrap导航条
Aug 09 Javascript
jquery实现轮播图效果
Feb 13 Javascript
jQuery回调方法使用示例
Jun 26 jQuery
React Native使用Modal自定义分享界面的示例代码
Oct 31 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
Jun 05 jQuery
vue-vuex中使用commit提交mutation来修改state的方法详解
Sep 16 Javascript
vue添加class样式实例讲解
Feb 12 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简单实现文本计数器的方法
2016/04/28 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
PHP设计模式之装饰器模式定义与用法详解
2018/04/02 PHP
PHP实现微信退款功能
2018/10/02 PHP
动态表格Table类的实现
2009/08/26 Javascript
jquery提示 &quot;object expected&quot;的解决方法
2009/12/13 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
2015/03/16 Javascript
jQuery简单实现日历的方法
2015/05/04 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
jquery自定义插件——window的实现【示例代码】
2016/05/06 Javascript
又一枚精彩的弹幕效果jQuery实现
2016/07/25 Javascript
巧用Javascript的逻辑运算符
2016/12/02 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
2017/08/18 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
2020/06/05 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
Python中的choice()方法使用详解
2015/05/15 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
python自动点赞功能的实现思路
2020/02/26 Python
Django DRF路由与扩展功能的实现
2020/06/03 Python
python中random模块详解
2021/03/01 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
业务代表的岗位职责
2013/11/16 职场文书
大学生求职信
2014/06/17 职场文书
80后婚前协议书范本
2014/10/24 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
SQL Server实现分页方法介绍
2022/03/16 SQL Server