BootstrapValidator是一款基于jQuery的Bootstrap表单校验插件,提供了非常丰富的校验规则。
准备工作
要使用BootstrapValidator,需要先引入必要的文件:
1  | <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap-3.0.3.min.css"/>  | 
其中需要注意的是jQuery版本必须大于1.9.1。文件下载地址:https://drive.google.com/open?id=1FVhZT899gewytpLVTwD-4x2uR1tSXFkN。
需要校验的表单必须由<form></form>标签包裹,并且需要验证的字段由<div class="form-group"></div>包裹,并且有name属性。比如:
1  | <form>  | 
绑定校验规则
对form元素绑定校验规则:
1  | $("form").bootstrapValidator({  | 
下面具体介绍各种校验规则。
非空校验
非空校验是最常见的一种校验之一,比如对name属性为userName的字段进行非空校验:
1  | userName: { // name属性值  | 
文本长度校验
比如对userName的长度进行控制:
1  | userName: {  | 
这里userName的长度被限制为3~10个字符(包含3和10)。%s分别表示3和10。
正则校验
BootstrapValidator支持正则表达式校验,比如:
1  | userName: {  | 
远程校验
远程校验使用Ajax异步请求从服务端进行校验,比如校验userName的值是否已经存在。如:
1  | userName: {  | 
假如userName字段填写的值为123,则参数格式为:userName=123&name=123,所以如果无需额外参数的话,data属性可以略去。
服务端:
1  | ("user/confirmUserName")  | 
当valid为true的时候,表示Mike用户名可用;当valid为false的时候,表示Mike已被注册。
邮箱校验
BootstrapValidator提供了邮箱校验的方法,可以不用手动编写邮箱的正则表达式:
1  | email: {  | 
对比校验
对比校验就是指当前字段的值和别的字段的值相比较,产生校验结果。常用于密码字段,比如有如下form表单:
1  | <form>  | 
常用的校验规则如下:
1  | password: {  | 
复选框校验
复选框校验用于控制复选框的选中个数:
1  | <div class="form-group">  | 
校验规则:
1  | hobbies: {  | 
数字范围校验
数字范围校验类似与文本长度校验,不过其一般用于数字类型的长度校验,比如限制年龄范围为1~150:
1  | age: {  | 
除了使用between外,还可以使用lessThan和greaterThan来实现和between类似的效果:
1  | age: {  | 
文件校验
文件校验用于对上传的附件类型,大小等进行限制,常用的规则如下:
1  | files: {  | 
更详细的校验规则如下表所示:
| 选项 | HTML属性 | 类型 | 描述 | 
|---|---|---|---|
| extension | data-fv-file-extension | String | 允许的扩展名,用逗号分隔 | 
| maxFiles | data-fv-file-maxfiles | Number | 最大文件数 | 
| maxSize | data-fv-file-maxsize | Number | 最大文件大小(以字节为单位) | 
| maxTotalSize | data-fv-file-maxtotalsize | Number | 所有文件的最大大小(以字节为单位) | 
| minFiles | data-fv-file-minfiles | Number | 文件的最小数量 | 
| minSize | data-fv-file-minsize | Number | 最小文件大小(以字节为单位) | 
| minTotalSize | data-fv-file-mintotalsize | Number | 所有文件的最小大小(以字节为单位) | 
| message | data-fv-file-message | String | 错误消息 | 
| type | data-fv-file-type | String | 允许的MIME类型,以逗号分隔。例如:设置 image/jpeg,image/png,application/pdf只允许上传JPEG,PNG图像和PDF文档。  | 
| MIME类型 | 文件扩展名 | 
|---|---|
| application/msword | doc | 
| application/pdf | |
| application/rtf | rtf | 
| application/vnd.ms-excel | xls | 
| application/vnd.ms-powerpoint | ppt | 
| application/x-rar-compressed | rar | 
| application/x-shockwave-flash | swf | 
| application/zip | zip | 
| audio/midi | mid midi kar | 
| audio/mpeg,audio/mp3 | mp3 | 
| audio/ogg | ogg | 
| audio/x-m4a | m4a | 
| audio/x-realaudio | ra | 
| image/gif | gif | 
| image/jpeg | jpeg jpg | 
| image/png | png | 
| image/tiff | tif tiff | 
| image/vnd.wap.wbmp | wbmp | 
| image/x-icon | ico | 
| image/x-jng | jng | 
| image/x-ms-bmp | bmp | 
| image/svg+xml | svg svgz | 
| image/webp | webp | 
| text/css | css | 
| text/html | html htm shtml | 
| text/plain | txt | 
| text/xml | xml | 
| video/3gpp | 3gpp 3gp | 
| video/mp4 | mp4 | 
| video/mpeg | mpeg mpg | 
| video/quicktime | mov | 
| video/webm | webm | 
| video/x-flv | flv | 
| video/x-m4v | m4v | 
| video/x-ms-wmv | wmv | 
| video/x-msvideo | avi | 
callback验证
callback用于校验验证码等类型,比如要实现下面这样的效果:

HTML代码:
1  | <div class="form-group">  | 
生成数学算式:
1  | function randomNumber(min, max) {  | 
校验规则:
1  | answer: {  | 
实际中,可以将上面的校验规则组合在一起,实现更复杂的校验。
常用事件
手动触发校验
手动触发校验包含触发单个字段和触发整个表单:
1  | // 整个表单  | 
获取当前表单校验结果
获取当前表单校验状态,校验通过返回true,否则返回false:
1  | var bootstrapValidators = $("form").data('bootstrapValidator');  | 
重置校验
1  | $('form').data('bootstrapValidator').resetForm(true); // 重置校验  | 

