BootstrapValidator使用指南
标签:bootstrap, validator因为项目需要数据验证,看bootstrapValidator还不错,虽然作者在2014年就不更新,去推广自己的收费组件formvalidation了.但是我没有找到更合适的免费组件,就用这个了.下面总结一下用法.
源码和API文档
bootstrapvalidator源码:https://github.com/nghuuphuoc/bootstrapvalidator
boostrapvalidator api:http://bootstrapvalidator.votintsev.ru/api/
引入文件
来看bootstrapvalidator的描述:A jQuery form validator for Bootstrap 3。从描述中我们就可以知道它至少需要jQuery、bootstrap的支持。我们首先引入需要的js组件
<script src="/scripts/jquery-1.10.2.js"></script>
<script src="/bootstrap/js/bootstrap.min.js"></script>
<link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
<script src="/bootstrapValidator/js/bootstrapValidator.min.js"></script>
<link href="/bootstrapValidator/css/bootstrapValidator.min.css" rel="stylesheet" />
表单HTML
在表单中,若对某一字段想添加验证规则,默认需要以<div class=”form-group”></div>包裹(对应错误提示会根据该class值定位),内部< input class=”form-control” />标签必须有name属性值,此值为验证匹配字段。
<form>
<div class="form-group">
<label>Username</label>
<input type="text" class="form-control" name="username" />
</div>
<div class="form-group">
<label>Email address</label>
<input type="text" class="form-control" name="email" />
</div>
<div class="form-group">
<button type="submit" name="submit" class="btn btn-primary">Submit</button>
</div>
</form>
验证规则
添加到js上
$(function () {
$('form').bootstrapValidator({
message: 'This value is not valid',
feedbackIcons: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
fields: {
username: {
message: '用户名验证失败',
validators: {
notEmpty: {
message: '用户名不能为空'
}
}
},
email: {
validators: {
notEmpty: {
message: '邮箱地址不能为空'
}
}
}
}
});
});
添加到html上
<form>
<div class="form-group">
<label>Username</label>
<input type="text" class="form-control" name="username"
data-bv-message="用户名不合法"
required
data-bv-notempty-message="用户名不能为空"
pattern="[a-zA-Z0-9]+"
data-bv-regexp-message="用户名只能包含字母和数字"/>
</div>
<div class="form-group">
<label>Email address</label>
<input type="text" class="form-control" name="email"
required
data-bv-notempty-message="Email不能为空"/>
</div>
<div class="form-group">
<button type="submit" name="submit" class="btn btn-primary">Submit</button>
</div>
</form>
定义自定义验证规则
该规则是拓展插件的validators方法。 我将项目中常用的方法放到了一个单独js中,也就是上面第一步引用的自定义方法。
使用方法如下:
(function($) {
//自定义表单验证规则
$.fn.bootstrapValidator.validators = {
<validatorName> : {
/**
* @param {BootstrapValidator} 表单验证实例对象
* @param {jQuery} $field jQuery 对象
* @param {Object} 表单验证配置项值
* @returns {boolean}
*/
validate: function(validator, $field, options) {
// 表单输入的值
// var value = $field.val();
//options为<validatorOptions>对象,直接.获取需要的值
// 返回true/false
//也可返回{ valid : true/false, message: 'XXXX'}
return reg.test( $field.val() );
}
},
};
}(window.jQuery));
常用事件
重置某一单一验证字段验证规则
$(formName).data("bootstrapValidator").updateStatus("fieldName", "NOT_VALIDATED", null );
重置表单所有验证规则
$(formName).data("bootstrapValidator").resetForm();
手动触发表单验证
//触发全部验证
$(formName).data("bootstrapValidator").validate();
//触发指定字段的验证
$(formName).data("bootstrapValidator").validateField('fieldName');
获取当前表单验证状态
// flag = true/false
var flag = $(formName).data("bootstrapValidator").isValid();
根据指定字段名称获取验证对象
// element = jq对象 / null
var element = $(formName).data("bootstrapValidator").getFieldElements('fieldName');
表单提交
当提交按钮是普通按钮
$("buttonName").on("click", function(){
//获取表单对象
var bootstrapValidator = form.data('bootstrapValidator');
//手动触发验证
bootstrapValidator.validate();
if(bootstrapValidator.isValid()){
//表单提交的方法、比如ajax提交
}
});
当提交按钮的[type=”submit”]时
会在success之前自动触发表单验证
var bootstrapValidator = form.data('bootstrapValidator');
bootstrapValidator.on('success.form.bv', function (e) {
e.preventDefault();
//提交逻辑
});
常用验证规则
1.判断字段是否为空
notEmpty: {
message: '用户名必填不能为空'
}
2.字段长度判断
stringLength: {
min: 6,
max: 30,
message: '用户名长度不能小于6位或超过30位'
},
3.通过正则表达式进行验证
regexp: {
regexp: /^[A-Z\s]+$/i,
message: '名字只能由字母字符和空格组成。'
}
4.大小写验证
stringCase: {
message: '姓氏必须只包含大写字符。',
case: 'upper'//其他值或不填表示只能小写字符
},
5.两个字段不相同的判断
different: {
field: 'password',
message: '用户名和密码不能相同。'
}
6.email验证
emailAddress: {
message: 'The input is not a valid email address'
}
7.日期格式验证
date: {
format: 'YYYY/MM/DD',
message: '日期无效'
}
8.纯数字验证
digits: {
message: '该值只能包含数字。'
}
9.ajax验证
threshold : 6 , //有6字符以上才发送ajax请求,(input中输入一个字符,插件会向服务器发送一次,设置限制,6字符以上才开始)
remote: {//ajax验证。server result:{"valid",true or false} 向服务发送当前input name值,获得一个json数据。例表示正确:{"valid",true}
url: 'exist2.do',//验证地址
message: '用户已存在',//提示消息
delay : 2000,//每输入一个字符,就发ajax请求,服务器压力还是太大,设置2秒发送一次ajax(默认输入一个字符,提交一次,服务器压力太大)
type: 'POST'//请求方式
},
10.复选框验证
choice: {
min: 2,
max: 4,
message: '请选择2-4项'
}
11.密码确认
identical: {
field: 'confirmPassword',
message: 'The password and its confirm are not the same'
},
12.判断输入数字是否符合大于18小于100
greaterThan: {
value: 18
},
lessThan: {
value: 100
}
13.uri验证
uri: {}
Written on 2018-01-12