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