如何用JavaScript从日期选择器获取星期几并切换显示状态
让我一步步帮你解决这两个问题,顺便修正你代码里的小问题:
问题1:如何使用JavaScript从日期选择器中获取所选日期对应的星期几?
当你用jQuery UI Datepicker时,changeDate事件返回的e.date是原生JavaScript Date对象,你可以用它的getDay()方法获取星期几——注意是小写的g(你代码里写的GetDay()是错误的,JS方法名严格区分大小写)。
getDay()的返回值范围是0到6,对应关系:
- 0 = 周日
- 1 = 周一
- 2 = 周二
- 3 = 周三
- 4 = 周四
- 5 = 周五
- 6 = 周六
举个实用的例子,获取后转换成中文星期几并打印:
$("#datepicker").datepicker({ autoclose: true, todayHighlight: true }).on('changeDate', function(e) { if (e.date) { const dayOfWeek = e.date.getDay(); const weekNames = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']; console.log('所选日期是:' + weekNames[dayOfWeek]); } });
问题2:根据所选日期的星期几切换显示状态
你的需求是:周六或周日显示openstatus1,其他日期显示openstatus。先指出你原代码里的几个关键问题:
- 方法名错误:
GetDay()应该是getDay() - 条件逻辑错误:
e.date.getDay()==6 && e.date.getDay()==7——一个日期不可能同时是周六和周日,而且getDay()返回最大值是6(周六),周日对应的是0,不是7,应该用||(或)来判断 toggle()方法的问题:toggle()是切换元素显示状态(显示变隐藏,隐藏变显示),这可能不符合需求,应该用show()和hide()明确控制显示/隐藏
修正后的完整代码如下:
$("#datepicker").datepicker({ autoclose: true, todayHighlight: true }).on('changeDate', function(e) { if (e.date) { const dayOfWeek = e.date.getDay(); // 判断是否是周日(0)或周六(6) if (dayOfWeek === 0 || dayOfWeek === 6) { $('.openstatus').hide(); $('.openstatus1').show(); } else { $('.openstatus').show(); $('.openstatus1').hide(); } } });
对应的表单结构(补充你未写完的部分):
<div id="datepicker" class="input-group" data-date-format="mm-dd-yyyy"> <input type="text" class="form-control"> <span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i></span> </div> <!-- 状态显示元素,默认隐藏周末状态 --> <div class="openstatus">工作日状态</div> <div class="openstatus1" style="display: none;">周末状态</div>
内容的提问来源于stack exchange,提问作者Muziwenhlanhla Dlamini
相关产品推荐
相关产品推荐

