AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】


Posted in Javascript onNovember 03, 2016

本文实例讲述了AngularJS验证信息框架的封装插件用法。分享给大家供大家参考,具体如下:

AngularJS 的表单验证规则

angular.js 的表单验证规则有 required(必填项),type="number"(必须为数字),type="email"(必须为邮箱地址),ng-max(最大值),ng-min(最小值),ng-max-length(最大长度),ng-min-length(最小长度),ng-pattern(正则验证)等等,而且angular写自定的验证规则也很简单。

具体的验证细节参考官方文档:http://docs.angularjs.org/guide/forms

AngularJS 默认的验证是实时的,如果输入框输入值验证通过会在input上加入class ng-valid,如果验证不通过会自动添加 class ng-invalid,输入框输入了值之后自动加上了 class ng-dirty,这样系统可以很简单的通过修改 ng-invalid ng-valid ng-dirty 三个样式达到验证提示的目的。但是如果验证失败需要提示一段文字,那么只有通过编写模板来达到。

Angular.js 验证的缺点

1. 提示信息是实时显示的,有时候我们更想要通过表单提交触发验证

2. 写验证提示信息需要写大量模板:

<div>
    Size (integer 0 - 10):
    <input type="number" ng-model="size" name="size"
       min="0" max="10" integer />{{size}}<br />
    <span ng-show="form.size.$error.integer">This is not valid integer!</span>
    <span ng-show="form.size.$error.min || form.size.$error.max">
     The value must be in range 0 to 10!</span>
</div>

w5cValidator 扩展插件的出现

Github上的源码地址为:https://github.com/why520crazy/w5c-validator-angular

目前版本v1.0.0

使用步骤:

1. 在项目中引用 w5cValidator.js

2. 在表单form上添加一个指令 w5c-form-validate 和 w5c-submit 如下所示:

<form class="form-horizontal cw-form demo-form" role="form" w5c-submit="js_save_entity(form_validate)"
         w5c-form-validate="" novalidate name="form_validate">
<div class="form-group">


<label class="col-sm-2 control-label">邮箱</label>


<div class="col-sm-10">



 <input type="email" name="email" ng-model="entity.email" required="" class="form-control" placeholder="输入邮箱">
  </div>
</div>
<div class="form-group">
  <label class="col-sm-2 control-label">用户名</label>

  <div class="col-sm-10">
     <input required="" ng-pattern="/^[A-Za-z]{1}[0-9A-Za-z_]{1,19}$/" ng-model="entity.name" class="form-control" name="user_name" placeholder="输入用户名">
  </div>
</div>

...
</form>

w5c-submit 函数是表单验证成功后执行的事件,验证失败不会执行

3. 没了,使用就这么简单

w5cValidator 使用注意事项:

1. w5cValidator 默认的错误提示使用了bootstrap的样式和布局,使用到你的项目中需要修改默认的 show_error, remove_error 方法,可以是tip提示,可以是统一在某个地方显示等等

2. w5cValidator 可以设置光标移走input时是否显示错误提示,默认false

3. w5cValidator 自带了默认的提示信息,同时支持自定义验证规则提示信息

4. angular.js的所有验证信息都是保存在form表单中的,w5cValidator也是监控表单元素的属性来实现的,使用必须要设置form以及每个元素的name属性,否则错误信息就找不到对应的元素

5. 看下以下的代码你就能明白一切了:

w5cValidator.init({
     //blur_trig  : false,
     //show_error : function (elem, error_messages) {
     //
     //},
     //remove_error: function (elem) {
     //
     //}
});
w5cValidator.set_rules({
    user_name: {
       required: "输入的用户名不能为空",
       pattern : "用户名必须输入字母、数字、下划线,以字母开头"
    }
});

当然目前的 w5cValidator 还比较原始,NgNice的验证提示就是使用了w5cValidator

未来规划中的 w5cValidator 2.0

1. 现在只能设置全局的显示类型,将来要支持单个表单的配置项,整个项目偶尔会有提示信息不同的情况

2. 代码重构,以AngularJS的方式编写扩展

3. 添加一些 AngularJS没有的验证类型 如 repeat ,uniquecheck 等

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
javascript StringBuilder类实现
Dec 22 Javascript
学习ExtJS Window常用方法
Oct 07 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
Nov 11 Javascript
jquery 操作两个select实现值之间的互相传递
Mar 07 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
Mar 10 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
May 14 Javascript
基于jquery实现简单的手风琴特效
Nov 24 Javascript
JS+CSS实现DIV层的展开、收缩效果
Jan 28 Javascript
浅谈javascript的call()、apply()、bind()的用法
Feb 21 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
May 21 Javascript
jQuery窗口拖动功能的实现代码
Feb 04 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
Jun 19 Javascript
基于vuejs+webpack的日期选择插件
May 21 #Javascript
Vue.js创建Calendar日历效果
Nov 03 #Javascript
AngularJS中transclude用法详解
Nov 03 #Javascript
基于Vue2的移动端开发环境搭建详解
Nov 03 #Javascript
AngularJS控制器之间的通信方式详解
Nov 03 #Javascript
最细致的vue.js基础语法 值得收藏!
Nov 03 #Javascript
AngularJS创建自定义指令的方法详解
Nov 03 #Javascript
You might like
php中AES加密解密的例子小结
2014/02/18 PHP
php打印输出棋盘的实现方法
2014/12/23 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
js查找父节点的简单方法
2008/06/28 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
Javascript中的isNaN函数使用说明
2011/11/10 Javascript
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
JavaScript实现找质数代码分享
2015/03/24 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
清除输入框内的空格
2016/12/21 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
python读取Android permission文件
2013/11/01 Python
Python中functools模块的常用函数解析
2016/06/30 Python
Python中模块string.py详解
2017/03/12 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
python 简单照相机调用系统摄像头实现方法 pygame
2018/08/03 Python
python实现简易动态时钟
2018/11/19 Python
django foreignkey(外键)的实现
2019/07/29 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
django跳转页面传参的实现
2020/09/17 Python
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
2014年党员创先争优承诺书
2014/05/29 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
2015年母亲节寄语
2015/03/23 职场文书
寒假致家长的一封信
2015/10/10 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
数学复习课教学反思
2016/02/18 职场文书
SQLServer中exists和except用法介绍
2021/12/04 SQL Server