由于项目在用bootstrap,为了更好的用户交互体验,需要加入前端校验框架,在参照了多个校验框架后,发现了这个基于bootstrap的框架bootstrapValidator,界面还不错,功能使用起来也挺符合一般bootstrap插件使用风格,容易理解,就采用了这个。
基本使用
效果
先看一下效果吧,省的介绍学习完了发现不喜欢风格,2333
大概就是这样,风格感觉还是不错的,起码能一目了然。
然后说具体使用。
引入
首先引入插件:
1 | <link rel="stylesheet" type="text/css" href="//cdn.bootcss.com/jquery.bootstrapvalidator/0.5.3/css/bootstrapValidator.min.css"> |
官网说本插件已更新至FormValidator,不过懒得再去尝试使用了,看来0.5.3是本插件最后一版。
初始化
然后就是对form表单初始化插件,html的form表单正常写就OK,不过要注意各表单项要有name属性,本插件是根据name属性绑定各表单项的。
举个初始化js的例子,拿上图的事件名称和事件类型来说:
1 | form.bootstrapValidator({ |
各项含义还是挺清晰的吧,fileds就是配置各表单项的验证,一个input text元素,一个select元素,支持的验证类型很丰富:
notEmpty:非空验证;
stringLength:字符串长度验证;
regexp:正则表达式验证;
emailAddress:邮箱地址验证;
base64:64位编码验证;
between:验证输入值必须在某一个范围值以内,比如大于10小于100;
creditCard:身份证验证;
date:日期验证;
ip:IP地址验证;
numeric:数值验证;
phone:电话号码验证;
uri:url验证;
还有很多很多,更多的请在次查看,http://bv.doc.javake.cn/validators/
提交
上述配置之后,当你修改某个表单项提交时就会触发校验。
最后还要处理一下提交表单的逻辑,一般是前端校验通过后才允许向后端发送请求,后端最好也再进行校验。
后端校验可以保证数据安全,保证不产生脏数据和运行错误,而前端校验是为了加强用户交互体验但并不安全,所以两者结合是必要的。
以下是提交按钮点击处理事件:
1 | //注册提交按钮点击事件 |
关注下前3行即可,如何触发校验,如何得到校验结果。
问题总结
默认编辑对话框弹出时是没有校验的,需要用户填写表单项并提交时才触发校验,我们可以改成展示对话框就进行校验,方便用户知道各项的填写规则而不用试错。
此外,使用日期插件的表单项在修改时不会触发bootstrapvalidator校验,应该是插件本身的bug,我们可以注册日期插件修改事件,手动触发校验。
最后处理如下:
1 | //展示对话框 |
对话框用的BootstrapDialog插件,onshown一项即是用来配置对话框展示后的处理,这里进行了表单校验,以及监听日期项修改触发校验。
从上面日期校验逻辑可以发现,共有开始日期和结束日期两个表单项(效果见最开始的截图),任一项修改都会对两者校验。为什么要校验两个呢,当然因为开始和结束日期需要校验先后啊,开始日期必须早于结束日期,这就引入了第三个问题,如何对多个关联字段校验。
后来,经查阅发现,bootstrapvalidator对此也是有支持的,就是采用它提供的callback函数。
如下:
1 | startTime: { |
通过callback函数,我们可以在校验某一表单项时,获得其它表单项的值进行关联校验。注意以上代码,放在bootstrapvalidator的初始化配置里。
最后的效果就是开始的截图所示,本篇介绍就到此结束。