bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路

一、前言

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

可以看出,当选择完日期后,校验结果并没有达到预期,是因为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方法的作用是更新给定字段的校验状态,官方介绍如下:

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

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

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

三、完整示例

1、JSP中

<form method="post" action="${ctx }/corp/enterpriseInfo/saveCorpInfo.htm" enctype="multipart/form-data" id="enterpriseInfoForm" name="enterpriseInfoForm">
<div class="col-md-5 col-md-offset-1 mar-top">
<div class="form-horizontal">
<div class="form-group">
<label class="col-md-3 control-label">公司注册时间:</label>
<div class="col-md-9">
<input type="text" class="form-control" id="companyRegisteTime" name="companyRegisteTime" value="${corpInfo.companyRegisteTime }">
</div>
</div>
</div>
</div>
</form>

2、js中初始化

<span style="font-size:18px;">$('#enterpriseInfoForm').bootstrapValidator({
message : '该值无效',
feedbackIcons : faIcon,
excluded : ':disabled',
fields : {
companyRegisteTime : {
message : '企业注册时间无效',
validators : {
notEmpty : {
message : '企业注册时间不能为空'
},
date : {
format : 'YYYY/MM/DD',
message : '日期格式不正确'
}
}
}
}
});</span>

效果展示

以上所述是小编给大家介绍的bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • BootStrap中Datepicker控件带中文的js文件

    bootstrap-datepicker 是一个非常优秀的时间选择插件,默认是英文显示日期的.本文给大家介绍bootstrap datepicker带中文的js文件. //用之前引用bootstrap的jsif ($(".datepicker").length > 0) { $(".datepicker").datepicker({ language: "zh-CN", autoclose: true,//选中之后自动隐藏日期选择框 cle

  • Bootstrap datepicker日期选择器插件使用详解

    bootstrap是与jquery.js文件一起结合起来一起用的,缺少任何一个文件都不可以. datepicker插件一般用于在文本框中选择日期,通过在表中选择日期,从而将日期显示在文本框中.因为datepicker.js默认是英文的,如果需要显示中文日期,则需要引入该插件的中文包. 例如: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv=&

  • bootstrap datepicker限定可选时间范围实现方法

    一.应用场景 实际应用中可能会根据日期字段查询某个日期范围内的数据,则需要对日期选择器可选时间进行限制, 如:开始时间不能大于结束时间,结束时间不能小于开始时间,此时就要为开始日期选择器和结束日期选择器动态的设置startDate和endDate的值. 二.相关知识点 1.bootstrap-datepicker的初始化 引入bootstrap-datepicker.js和bootstrap-datepicker.css bootstrap-datepicker配置参数的了解 2.boostra

  • JS控件bootstrap datepicker使用方法详解

    bootstrap-datepicker沙箱环境: bootstrap-datepicker沙箱环境: 1.requirejs配置 requirejs.config({ baseUrl: '../pages/modules', // urlArgs: "v=" + (new Date()).getTime(),//禁止缓存,生产环境去除 urlArgs:'v=2016110701', paths: { jquery: ["../../plugins/jquery/jquery

  • BootStrap的Datepicker控件使用心得分享

    2013年Bootstrap火了,2014年Bootstrap将继续受到更多人的喜欢,它不仅拥有一套完整漂亮的UI,而且爱好者们为其开发扩展了很多有用的插件和主题!让其拥有无限可能! 公司喜欢使用各种开源免费的框架,bootstrap就非常好用,而且框架布局很漂亮,用起来也很简单.今天遇到要使用它的datepicker这个控件. 问题是:两个时间点,分为开始时间和结束时间,结束时间必须在开始时间之后.于是一顿研究,从上午研究到3点才解决问题. 总结了一下问题所在.主要原因是项目里用的jquery

  • 浅谈Bootstrap的DatePicker日期范围选择

    用日期插件时,经常会有一种需求.两个input框选择.开始时间小于结束时间,结束时间大于开始时间,开始时间和结束时间都不大于当前时间. 我们当然可以用选择的结果来判断输入正确与否.但是更好的办法是让我们的日期选择插件做出一些限制. Bootstrap搭配了很优秀的日期选择插件.DatePicker和DateTimePicker. 两者功能很类似.使用方法也是差不多的.DatePicker支持更多的事件和设置. 看api知道日期变化的时候会有一个事件changeDate.当选择的日期变化的时候,会

  • BootStrap Datepicker 插件修改为默认中文的实现方法

    bootstrap-datepicker 是一个非常优秀的时间选择插件,默认是英文显示日期的,通过下面几个小修改让其支持默认中文 1.首先将 bootstrap-datepicker.js 另存为 utf-8 格式保存 2.增加 cn 语言选项 var dates = $.fn.datepicker.dates = { en: { days: ["Sunday", "Monday", "Tuesday", "Wednesday"

  • bootstrap datepicker插件默认英文修改为中文

    datepicker插件默认为英文,而且格式为:mm/dd/yyyy这种情况,看起来不怎么直观. 修改目标: 1.默认显示为中文 2.格式为:yyyy年mm月dd日 需要修改两个地方: 1.更改datas对象, 增加zh-cn语言选项:参见源代码的1419行 var dates = $.fn.datepicker.dates = { en: { days: ["Sunday", "Monday", "Tuesday", "Wednesd

  • bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路

    一.前言 使用bootstrap-datepicker和bootstrapValidator也有一段时间了,在工作中发现两者同时使用时会出现的一种问题,当选择完日期后,并不会正确校验该字段.为了更加直观的展现问题,上图一张. 可以看出,当选择完日期后,校验结果并没有达到预期,是因为bootstrapValidator插件默认情况下,不会重复校验一个已经标记为验证通过或验证不通过的字段.so ,当开始触发校验后,没有通过校验,当正确选择日期后,并不会刷新校验结果,就会导致数据无法正常提交,当手动把

  • bootstrap datepicker的基本使用教程

    首先 引入相应css和js: <link rel="stylesheet" th:href="@{/assets/css/datepicker.css}" rel="external nofollow" /> <script th:src="@{/assets/js/date-time/bootstrap-datepicker.js}"></script> 然后html代码装载控件 <

  • Android开发之DatePicker和TimePicker实现选择日期时间功能示例

    本文实例讲述了Android开发之DatePicker和TimePicker实现选择日期时间功能.分享给大家供大家参考,具体如下: DatePicker常用属性: 1. calendarViewShown 设置其是否显示CalenderView组件 2. endYear                   允许选择的最后一年 3. maxDate                  支持的最大日期 4. minDate                   允许选择的最小日期 5. spinnerS

  • 建立自由的会计日期的报表--1.2.创建让用户选择日期窗体

    2.创建让用户选择日期窗体 创建一个窗体,添加以下控件:一个"年"组合框,一个"月"组合框,一个"开始日期"文本框,一个"结束日期"文本框.如果添加组合框时出现控件向导,取消向导. 把"年"组合框的数据属性设置如上图,这样用户就只能选择1999-2002年,当然还可以再增加年份.默认值为当前日期的年份. 和"年"组合框类似,把"月"组合框的数据属性设置如上图,这样用户

  • 原生JS实现左右箭头选择日期实例代码

    先上个效果图,就是用左右尖括号可改变中间日期的值.(点击中间显示区域有时间选择器弹框,用的插件就不说了,主要说自己原创的部分) HTML部分 (左右箭头都是用的图片素材,网上一大把,这里我就显示我本地地址了) <div> <span class="leftspan" <span style="color:#FF0000;">onclick="reducedate()"</span>><img

  • Vue无限滑动周选择日期的组件的示例代码

    之前在做一个手机端项目的时候,需要一个左右滑动(按周滑动)选择日期插件,而且当时这个项目没有用到Vue.当时又没有找到合适的第三方插件,就花了点时间用原生JavaScript写了出来,当时心中就想把它写成基于Vue的组件,这短时间闲了把它弄出来了!,在这个过程中遇到了一个坑,后面会提出来! 先看效果  思路 根据用户传入日期(不传默认今天),获取上一周,当周,下一周对应的日期放数组dates里 let vm = this this.dates.push( { date: moment(vm.de

随机推荐