12/13 发表评论

使用 bootstrap-datepicker 和 bootstrapValidator 也有一段时间了,在工作中发现两者同时使用时会出现的一种问题,当选择完日期后,并不会正确校验该字段。为了更加直观的展现问题,上图一张。

20160613140904013.png

可以看出,当选择完日期后,校验结果并没有达到预期,是因为bootstrapValidator插件默认情况下,不会重复校验一个已经标记为验证通过或验证不通过的字段。so ,当开始触发校验后,没有通过校验,当正确选择日期后,并不会刷新校验结果,就会导致数据无法正常提交,当手动把日期改变后,会发现校验被正确触发了。现在就说解决方法。

问题解决:
根据应用场景分析,当日期选择插件关闭时,期望能够触发校验。所以使用 bootstrap-datepicker 的 hide 方法。当日期选择框关闭时,执行刷新校验。先贴代码再解释:

/* 加载时间选择插件 */
$('#companyRegisteTime').datepicker({
    todayBtn : 'linked',
    autoclose : true,
    todayHighlight : true,
    endDate : new Date()
}).on('hide',function(e) {
            $('#enterpriseInfoForm').data('bootstrapValidator').updateStatus('companyRegisteTime', 'NOT_VALIDATED', null).validateField('companyRegisteTime');
});

updateStatus 方法的作用是更新给定字段的校验状态,官方介绍如下:

20160613142543473.png

validateField 方法的作用是触发给定字段的校验

20160613142717138.png

boostrapValidator 官方文档地址:http://bv.doc.javake.cn/api/
bootstrap-datepicker 文档地址:http://bootstrap-datepicker.readthedocs.io/en/latest/

原文:http://blog.csdn.net/biedazhangshu/article/details/51657292

发表评论

回到顶端