如何用jQuery和JavaScript统计Bootstrap多日期选择器的选中日期数
解决Bootstrap Datepicker多选日期时统计选中天数的问题
你的问题根源有两个:
- 用
val()获取的是逗号拼接的日期字符串,直接取length得到的是字符总数,不是选中的日期数量; - 原生
change事件无法同步组件内部的最新选中状态,容易拿到历史残留值。
- 用
正确的处理方式是用Bootstrap Datepicker自带的API和事件:
- 改用组件专属的
changeDate事件(这是组件为日期变更专门触发的事件,比原生change更精准); - 调用
datepicker('getDates')方法,直接获取选中的日期对象数组,数组长度就是选中天数。
- 改用组件专属的
修改后的代码:
$(document).on('changeDate', '#leavedate', function(e) { // 获取选中的日期数组 const selectedDates = $('#leavedate').datepicker('getDates'); // 数组长度即为选中天数 const dayCount = selectedDates.length; alert(dayCount); });
- 如果非要通过处理
val()实现(不推荐,易出异常),可以这样写:
$(document).on('changeDate', '#leavedate', function(e) { const dateStr = $('#leavedate').val(); // 空值时返回0,否则按逗号分割后取数组长度 const dayCount = dateStr ? dateStr.split(',').length : 0; alert(dayCount); });
注意:优先用
getDates()方法,它直接读取组件内部维护的选中状态,不会因为手动输入字符串、格式异常等情况出错,稳定性更高。
内容的提问来源于stack exchange,提问作者Megumin the Explosion
相关产品推荐
相关产品推荐

