【问题标题】:set Default date in datepicker with Tuesdays & Wednesdays only?在日期选择器中设置默认日期,仅限周二和周三?
【发布时间】:2017-06-29 23:02:23
【问题描述】:

我有一个日期选择器,它禁用了过去的所有日子,并且禁用了除周二和周三之外的所有日子。

我希望默认日期是一周中第一个启用的日期。如果是星期二,则应显示星期二,如果是星期三,则应显示星期三。其他任何一天,它都应该在下周二显示在输入字段中。

这是我用于日期选择器的代码。

<script type="text/javascript">   
    $(document).ready(function(){
        $( ".datepicker" ).datepicker({
            minDate:'0',
            changeMonth:true,
            changeYear:true,
        beforeShowDay:
              function(dt)
              {
                  return [dt.getDay() === 2 || dt.getDay() === 3, ""];
              }});
        });
</script>

以及我使用选择器的输入:

<form method="POST">
    <div style='margin:0 auto; text-align:center;'>
        <label>Appointment Date: </label>
        <input type="hidden" name="action" value="list_appointments" />
        <input type="text" id="datepicker" name="date" class="datepicker" />
               <!--value=--><?php #echo date_format(new DateTime("now",new DateTimeZone('America/Chicago')),'m/d/Y');?> 
        <input type="submit" value="Refresh List" name="Update" />
        <br />
    </div>
</form>

【问题讨论】:

    标签: javascript php jquery date datepicker


    【解决方案1】:

    您可以使用momentjs 使获取一周中的第二天更容易一些,然后只需使用 if-else 语句来获取正确的一周中的哪一天:

     function setDate() {
       var today = moment().isoWeekday(); //or just = new Date().getDay();
       if (today <= 2) {
         return moment().isoWeekday(2);
       } else if (today === 3) {
         return moment().isoWeekday(3);
       } else {
         return moment().add(1, 'weeks').isoWeekday(2);
       }
     }
    

    然后调用setDate() 函数并将该返回值设置为日期选择器中的日期。

     $('.datepicker').datepicker("setDate", new Date(setDate()));
    

    这是一个工作示例:https://jsfiddle.net/jutcw0ve/

    【讨论】:

    • new Date().getDay() 不等同于 ISO 工作日编号,因为它在星期日返回 0,但 var isoWeekday = new Date().getDay() || 7; 会给出正确的结果。 ;-)
    • 你定义的setDate方法正确返回了一个时间戳,但是这个时间戳不会为我设置selector语句中的日期。
    • @ArmorCode,您是否确保完全按照我在上述代码中所做的设置? (注意,你需要像我一样做new Date(setDate()),否则它不起作用)。
    • 是的。我还验证了该函数使用document.write() 生成了正确的值,并尝试将时刻语句保存到变量中,然后尝试返回new date(momentVariable) 并将setDate() 作为.datepicker 选择器中的第二个参数@ 与那些更改,它仍然产生正确的值,但没有出现在日期选择器中。争论是否需要正确格式化?与日期选择器一样 m/d/Y 吗?
    猜你喜欢
    • 1970-01-01
    • 2014-03-19
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 2020-08-13
    相关资源
    最近更新 更多