bootstrap datepicker 與bootstrapValidator同時(shí)使用時(shí)選擇日期后無(wú)法正常觸發(fā)校驗(yàn)的解決思路
一、前言
使用bootstrap-datepicker和bootstrapValidator也有一段時(shí)間了,在工作中發(fā)現(xiàn)兩者同時(shí)使用時(shí)會(huì)出現(xiàn)的一種問(wèn)題,當(dāng)選擇完日期后,并不會(huì)正確校驗(yàn)該字段。為了更加直觀的展現(xiàn)問(wèn)題,上圖一張。

可以看出,當(dāng)選擇完日期后,校驗(yàn)結(jié)果并沒(méi)有達(dá)到預(yù)期,是因?yàn)閎ootstrapValidator插件默認(rèn)情況下,不會(huì)重復(fù)校驗(yàn)一個(gè)已經(jīng)標(biāo)記為驗(yàn)證通過(guò)或驗(yàn)證不通過(guò)的字段。so ,當(dāng)開(kāi)始觸發(fā)校驗(yàn)后,沒(méi)有通過(guò)校驗(yàn),當(dāng)正確選擇日期后,并不會(huì)刷新校驗(yàn)結(jié)果,就會(huì)導(dǎo)致數(shù)據(jù)無(wú)法正常提交,當(dāng)手動(dòng)把日期改變后,會(huì)發(fā)現(xiàn)校驗(yàn)被正確觸發(fā)了?,F(xiàn)在就說(shuō)解決方法。
二、問(wèn)題解決
根據(jù)應(yīng)用場(chǎng)景分析,當(dāng)日期選擇插件關(guān)閉時(shí),期望能夠觸發(fā)校驗(yàn)。所以使用bootstrap-datepicker的hide方法。當(dāng)日期選擇框關(guān)閉時(shí),執(zhí)行刷新校驗(yàn)。先貼代碼再解釋:
/* 加載時(shí)間選擇插件 */
$("#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方法的作用是更新給定字段的校驗(yàn)狀態(tài),官方介紹如下:

validateField方法的作用是觸發(fā)給定字段的校驗(yàn)

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">公司注冊(cè)時(shí)間:</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 : '該值無(wú)效',
feedbackIcons : faIcon,
excluded : ':disabled',
fields : {
companyRegisteTime : {
message : '企業(yè)注冊(cè)時(shí)間無(wú)效',
validators : {
notEmpty : {
message : '企業(yè)注冊(cè)時(shí)間不能為空'
},
date : {
format : 'YYYY/MM/DD',
message : '日期格式不正確'
}
}
}
}
});</span>
效果展示

以上所述是小編給大家介紹的bootstrap datepicker 與bootstrapValidator同時(shí)使用時(shí)選擇日期后無(wú)法正常觸發(fā)校驗(yàn)的解決思路,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
基于JavaScript實(shí)現(xiàn)抽獎(jiǎng)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)抽獎(jiǎng)系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
JavaScript如何在不重新加載頁(yè)面的情況下修改URL
在現(xiàn)代Web應(yīng)用中,單頁(yè)面應(yīng)用(SPA)越來(lái)越流行,為了提升用戶體驗(yàn),我們經(jīng)常需要在不重新加載頁(yè)面的情況下修改URL,本文將詳細(xì)介紹如何在不重新加載頁(yè)面的情況下修改URL,并通過(guò)多個(gè)示例展示其應(yīng)用場(chǎng)景,需要的朋友可以參考下2024-11-11
echarts地圖繪制自定義標(biāo)記實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于echarts地圖繪制自定義標(biāo)記實(shí)現(xiàn)的相關(guān)資料,ECharts地圖是一個(gè)功能強(qiáng)大的數(shù)據(jù)可視化工具,基于百度ECharts開(kāi)源項(xiàng)目開(kāi)發(fā)而成,它主要用于在網(wǎng)頁(yè)中展示各種地理數(shù)據(jù)和地圖的信息,需要的朋友可以參考下2023-11-11
前端下載文件時(shí)如何后端返回的文件流一些常見(jiàn)方法
這篇文章主要介紹了前端下載文件時(shí)如何后端返回的文件流一些常見(jiàn)方法,包括使用Blob和URL.createObjectURL創(chuàng)建下載鏈接,以及處理帶有Content-Disposition的下載,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04
深入理解JavaScript繼承的多種方式和優(yōu)缺點(diǎn)
這篇文章主要介紹了深入理解JavaScript繼承的多種方式和優(yōu)缺點(diǎn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
three.js鏡頭追蹤的移動(dòng)效果實(shí)例
這篇文章主要為大家介紹了three.js鏡頭追蹤的移動(dòng)效果實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
IE FF OPERA都可用的彈出層實(shí)現(xiàn)代碼
多瀏覽器的彈出層效果核心代碼。需要的朋友可以測(cè)試下這個(gè)是從正在使用的網(wǎng)站中扒下來(lái)的。2009-09-09
可以用來(lái)搜索當(dāng)前頁(yè)面內(nèi)容的js代碼
搜索頁(yè)面內(nèi)容的js代碼,不過(guò)這效率不是很高,大篇幅內(nèi)容不建議使用。2009-12-12

