jquery插件bootstrapValidator表单验证详解


Posted in Javascript onDecember 15, 2016

Bootstrap Validator是为Bootstrap3设计的一款表单验证jQuery插件,非常适合基于Bootstrap框架的网站。
看作者的github,这款插件已经不再更新了,而推荐使用FormValidation,不过现在还是先介绍一下BootstrapValidator的使用。

准备工作

BootstrapValidator文档地址:http://bv.doc.javake.cn/

下载源码后,将其中的bootstrapValidator.min.css和bootstapValidator.min.js导入项目,并在页面中引入这些组件,如下:

<link rel="stylesheet" type="text/css" href="path/bootstrapValidator.min.css">
<script type="text/javascript" src="path/bootstrapValidator.min.js"></script>

其中path是对应文件导入项目的路径

简单应用

文档中给出调用插件的方法是:

$(document).ready(function() {
 $(formSelector).bootstrapValidator({
 excluded: ...,
 feedbackIcons: ...,
 live: 'enabled',
 message: 'This value is not valid',
 submitButtons: 'button[type="submit"]',
 submitHandler: null,
 trigger: null,
 fields: {
 <fieldName>: {
 enabled: true,
 message: 'This value is not valid',
 container: null,
 selector: null,
 trigger: null,
 // Map the validator name with its options
 validators: {
 ...
 <validatorName>: <validatorOptions>
 ...
 }
 }
 ...
 }
 });
});

下面针对一个简单的表单来进行说明:

<form id="logForm" class="form-horizontal">
 <div class="form-group">
 <label class="col-lg-3 control-label">用户名</label>
 <div class="col-lg-5">
 <input type="text" class="form-control" name="username" />
 </div>
 </div>
 <div class="form-group">
 <label class="col-lg-3 control-label">邮箱</label>
 <div class="col-lg-5">
 <input type="text" class="form-control" name="email" />
 </div>
 </div>
 <div class="form-group">
 <label class="col-lg-3 control-label">密码</label>
 <div class="col-lg-5">
 <input type="password" class="form-control" name="password" />
 </div>
 </div>
 <button type="submit" class="btn btn-md">提交</button>
</form>

对于上面这个表单应用BootstrapValidator非常简单,fieldName 对应表单中每一项的 name 属性,然后BV还内置了很多 validator 供用户选择,详细可参考文档的 validators 部分,可以看到,邮箱格式的验证正是其中之一,不需要用户自己写正则了。

$(document).ready(function() {
 $('#signup-form').bootstrapValidator({
 fields: {
 username: {
 validators: {
 notEmpty: {
 message: '用户名不能为空'
 },
 stringLength: {
 min: 3,
 max: 6,
 message: '用户名只能在3-6个字符之间哦~'
 }
 }
 },
 email: {
 validators: {
 emailAddress: {
 message: '邮箱格式有误'
 }
 }
 },
 password: {
 validators: {
 notEmpty: {
 message: '密码不能为空'
 },
 stringLength: {
 min: 6,
 max: 8,
 message: '密码必须在6-8个字符之间~'
 },
 regexp: {
 regexp: /^[a-zA-Z0-9]+$/,
 message: '密码只能由字母、数字组成~'
 }
 }
 }
 }
 });
});

不符合验证要求时,会显示错误提示的message,并且禁用提交按钮,提示信息的颜色字体等等都可以重写css来设置,效果展示如下:

jquery插件bootstrapValidator表单验证详解

注:图中的注册按钮处于禁用状态

下面再介绍一下fields的 selector,因为表单数据往往是属于某一个注册用户所有,为方便与后台进行数据交互,我们往往按如下的形式设置name,这时候就不能直接利用name属性来进行验证了,而是使用selector来定义fields:

<form class="form-horizontal">
 <div class="form-group">
 <label class="col-lg-3 control-label">用户名</label>
 <div class="col-lg-5">
 <input type="text" id="user" class="form-control" name="login_user.userName" />
 </div>
 </div>
 <div class="form-group">
 <label class="col-lg-3 control-label">密码</label>
 <div class="col-lg-5">
 <input type="password" id="pass" class="form-control" name="login_user.password" />
 </div>
 </div>
 <button type="submit" id="submitBtn" class="btn btn-md">提交</button>
</form>

对应的js代码:

$(document).ready(function() {
 $('#signup-form').bootstrapValidator({
 fields: {
 user: {
 selector: '#user', 
 validators: {
 notEmpty: {
 message: '用户名不能为空'
 },
 stringLength: {
 min: 3,
 max: 6,
 message: '用户名只能在3-6个字符之间哦~'
 }
 }
 },
 pass: {
 selector: '#pass',
 validators: {
 notEmpty: {
 message: '密码不能为空'
 },
 stringLength: {
 min: 6,
 max: 8,
 message: '密码必须在6-8个字符之间~'
 },
 regexp: {
 regexp: /^[a-zA-Z0-9]+$/,
 message: '密码只能由字母、数字组成~'
 }
 }
 }
 }
 });
});

如果你嫌弃这样写代码累赘,可以直接应用相应的HTML属性,详细可参考文档的 settings 部分

jquery插件bootstrapValidator表单验证详解

还想深入学习表单验证的朋友,可以点击专题:jquery表单验证大全 JavaScript表单验证大全

如果大家还想深入学习,可以点击这里进行学习,再为大家附3个精彩的专题:

以上只是BootstrapValidator的一个非常简单的应用, 官方文档 很详细,感兴趣的话就继续查阅,来深入了解它的强大功能吧

Javascript 相关文章推荐
跟随鼠标旋转的文字
Nov 30 Javascript
Firefox中使用outerHTML的2种解决方法
Jun 07 Javascript
jQuery的remove()方法使用详解
Aug 11 Javascript
JavaScript判断表单为空及获取焦点的方法
Feb 12 Javascript
分分钟学会vue中vuex的应用(入门教程)
Sep 14 Javascript
layui获取选中行数据的实例讲解
Aug 19 Javascript
vue实现打印功能的两种方法
Sep 07 Javascript
35个最好用的Vue开源库(史上最全)
Jan 03 Javascript
Vue实现的父组件向子组件传值功能示例
Jan 19 Javascript
JS替换字符串中指定位置的字符(多种方法)
May 28 Javascript
js异步接口并发数量控制的方法示例
Nov 22 Javascript
Vue 实例中使用$refs的注意事项
Jan 29 Vue.js
jQuery中的100个技巧汇总
Dec 15 #Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Dec 14 #Javascript
详解jQuery中的事件
Dec 14 #Javascript
JS实现鼠标移上去显示图片或微信二维码
Dec 14 #Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
Dec 14 #Javascript
node.js报错:Cannot find module 'ejs'的解决办法
Dec 14 #Javascript
原生JS获取元素集合的子元素宽度实例
Dec 14 #Javascript
You might like
php带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
2013/06/29 PHP
php获得url参数中具有&amp;的值的方法
2014/03/05 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
JSQL 基于客户端的成绩统计实现方法
2010/05/05 Javascript
php对mongodb的扩展(初识如故)
2012/11/11 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
自动最大化窗口的Javascript代码
2013/05/22 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
2016/04/12 Javascript
JavaScript中的继承之类继承
2016/05/01 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
JS中Attr的用法详解
2017/10/09 Javascript
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
python 将字符串转换成字典dict
2013/03/24 Python
python学习之编写查询ip程序
2016/02/27 Python
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
matplotlib作图添加表格实例代码
2018/01/23 Python
利用anaconda保证64位和32位的python共存
2021/03/09 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
Linux文件系统类型
2012/09/16 面试题
Java基础面试题
2014/07/19 面试题
养殖人员的创业计划书范文
2013/12/26 职场文书
会计与审计毕业生自荐信范文
2013/12/30 职场文书
暑期社会实践心得体会
2014/09/02 职场文书
2015年社会实践个人总结
2015/03/06 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
Java中API的使用方法详情
2022/04/06 Java/Android
字节飞书面试promise.all实现示例
2022/06/16 Javascript
python可视化分析绘制带趋势线的散点图和边缘直方图
2022/06/25 Python