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); // 重置校验 |

