bootstrap-datepicker 与bootstrapValidator同时使用时,选择日期后,无法正常触发校验

一、前言

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


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

二、问题解决

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

[javascript]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1.     /* 加载时间选择插件 */  
  2.     $("#companyRegisteTime").datepicker({  
  3.         todayBtn : "linked",  
  4.         autoclose : true,  
  5.         todayHighlight : true,  
  6.         endDate : new Date()  
  7.     }).on('hide',function(e) {  
  8.                 $('#enterpriseInfoForm').data('bootstrapValidator')  
  9.                     .updateStatus('companyRegisteTime''NOT_VALIDATED',null)  
  10.                     .validateField('companyRegisteTime');  
  11.             });  
  12.       

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



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




boostrapValidator官方文档地址:http://bv.doc.javake.cn/api/


bootstrap-datepicker文档地址:http://bootstrap-datepicker.readthedocs.io/en/latest/



三、完整示例

1、JSP中

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <form method="post" action="${ctx }/corp/enterpriseInfo/saveCorpInfo.htm" enctype="multipart/form-data" id="enterpriseInfoForm" name="enterpriseInfoForm">  
  2.     <div class="col-md-5 col-md-offset-1 mar-top">  
  3.         <div class="form-horizontal">  
  4.             <div class="form-group">  
  5.                 <label class="col-md-3 control-label">公司注册时间:</label>  
  6.                 <div class="col-md-9">  
  7.                     <input type="text" class="form-control" id="companyRegisteTime" name="companyRegisteTime" value="${corpInfo.companyRegisteTime }">  
  8.                 </div>  
  9.             </div>  
  10.         </div>  
  11.     </div>  
  12. </form>  



 
  

2、js中初始化

[javascript]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <span style="font-size:18px;">$('#enterpriseInfoForm').bootstrapValidator({  
  2.     message : '该值无效',  
  3.     feedbackIcons : faIcon,  
  4.     excluded : ':disabled',  
  5.     fields : {  
  6.                         companyRegisteTime : {  
  7.             message : '企业注册时间无效',  
  8.             validators : {  
  9.                 notEmpty : {  
  10.                     message : '企业注册时间不能为空'  
  11.                 },  
  12.                 date : {  
  13.                     format : 'YYYY/MM/DD',  
  14.                     message : '日期格式不正确'  
  15.                 }  
  16.             }  
  17.         }  
  18.         }  
  19. });</span>  


效果展示




bootstrap-datepicker是一个基于Bootstrap日期选择器插件,它提供了丰富的日期选择日期范围选择功能。要使用bootstrap-datepicker,需要按照以下步骤进行操作: 1. 在你的HTML文件中引入必需的CSS和JS文件。可以从官方网站下载最新版本的bootstrap-datepicker文件,或者使用CDN链接。例如: ```html <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/css/bootstrap-datepicker.min.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/js/bootstrap-datepicker.min.js"></script> ``` 2. 在日期输入框元素上添加`data-provide="datepicker"`属性。例如: ```html <input type="text" class="form-control" data-provide="datepicker"> ``` 3. 使用JavaScript代码初始化日期选择器。例如: ```javascript $(document).ready(function() { $('[data-provide="datepicker"]').datepicker(); }); ``` 以上代码会将所有带有`data-provide="datepicker"`属性的输入框转换为日期选择器。 4. 可以通过在初始化代码中传递选项参数来自定义日期选择器的外观和功能。例如: ```javascript $(document).ready(function() { $('[data-provide="datepicker"]').datepicker({ format: 'yyyy-mm-dd', autoclose: true, todayBtn: 'linked', todayHighlight: true }); }); ``` 在上述代码中,`format`选项指定日期的格式,`autoclose`选项指定是否在选择日期后自动关闭日期选择器,`todayBtn`选项指定是否显示“今天”按钮,`todayHighlight`选项指定是否高亮显示当前日期。 这只是bootstrap-datepicker的基本使用方法,你可以根据需要进一步定制和扩展日期选择器的功能。更多详细的使用说明和选项参数,请参考bootstrap-datepicker的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值