2014-01-11 124 views
0

我有一个使用日期选择器向日期添加日期的问题。我知道这已经被问了很多次,但是我们有不同的代码实现,这就是为什么我需要帮助谁知道这个的人。添加日期时,必须排除星期一和星期日的。我有这样的代码:添加天日期选择器JS

<script type="text/javascript"> 
     $(document).ready(function() { 
      $("#dt1").datepicker({ 
       dateFormat: "dd-M-yy", 
       minDate: 0, 
       onSelect: function (date) { 
        var date2 = $('#dt1').datepicker('getDate'); 
        date2.setDate(date2.getDate() + 2); 
        if (date2.getDay() != 0 && date2.getDay() != 6) // Skip weekends 
        { $('#dt2').datepicker('setDate', date2); 
        //sets minDate to dt1 date + 1 
        $('#dt2').datepicker('option', 'minDate', date2); 
       } 
       } 
      }); 
      $('#dt2').datepicker({ 
       dateFormat: "dd-M-yy", 
       onClose: function() { 
        var dt1 = $('#dt1').datepicker('getDate'); 
        console.log(dt1); 
        var dt2 = $('#dt2').datepicker('getDate'); 
        if (dt2 <= dt1) { 
         var minDate = $('#dt2').datepicker('option', 'minDate'); 
         $('#dt2').datepicker('setDate', minDate); 
        } 
       } 
      }); 
     }); 
    </script> 

使用<script src="../js/jquery-1.9.1.js"></script>

,这里是我的输入字段:

<input type="text" id="dt1" name="date_borrow" pattern="alpha" required/> 
<input type="text" id="dt2" name="date_will_return" pattern="alpha" required/> 

所以,当我点击thisthis,结果必然是this

我上面尝试添加日期不起作用。我从那里错过了什么?

回答

1
$(document).ready(function() { 
    $("#dt1").datepicker({ 
     dateFormat: 'dd-M-yy', 
     minDate: 0, 
     beforeShowDay: function (date) { 
      var day = date.getDay(); 
      return [(day != 0 && day != 6), ''] 
     }, 
     onSelect: function (date) { 
      var date2 = $("#dt1").datepicker('getDate'); 
      if (date2.getDay() == 5) { 
       date2.setDate(date2.getDate() + 3); 
       $("#dt2").datepicker('setDate', date2); 
      } else if (date2.getDay() == 3) { 
       date2.setDate(date2.getDate() + 2); 
       $("#dt2").datepicker('setDate', date2); 
      } else if (date2.getDay() == 4) { 
       date2.setDate(date2.getDate() + 4); 
       $("#dt2").datepicker('setDate', date2); 
      } else { 
       date2.setDate(date2.getDate() + 2); 
       $("#dt2").datepicker('setDate', date2); 
      } 

     } 
    }) 
    $('#dt2').datepicker({ 
     dateFormat: 'dd-M-yy', 
     minDate: 0, 
     beforeShowDay: function (date) { 
      var day = date.getDay(); 
      return [(day != 0 && day != 6), ''] 
     }, 
    }); 
}); 
+0

谢谢,但在你的代码,当我尝试点击23,2天必须相加,其结果必须是周一这意味着加入天不包括周六和周日不工作。 :( – Cecil

+0

@cecil让我检查 –

+0

当我点击23,23被正确添加时,请检查小提琴 –

0

如果有人想跳过某些工作日,我已经写了这段代码。可能这对任何人都有用。

function AddDays(date, offset, skipSunday, skipMonday, skipTueday, skipWednesday, skipThursday, skipFriday, skipSaturday) { 

// If user wants to skip all days then return the same date because this is not possible 
if (skipSunday && skipMonday && skipTueday && skipWednesday && skipThursday && skipFriday && skipSaturday) { 
    return date; 
} 

// Create array for all day numbers 
var skipDays = []; 
if (skipSunday) skipDays.push(0); 
if (skipMonday) skipDays.push(1); 
if (skipTueday) skipDays.push(2); 
if (skipWednesday) skipDays.push(3); 
if (skipThursday) skipDays.push(4); 
if (skipFriday) skipDays.push(5); 
if (skipSaturday) skipDays.push(6); 

while (offset > 0) { 
    date.setDate(date.getDate() + 1); 
    if ($.inArray(date.getDay(), skipDays) <= -1) { 
     offset-- 
    } 
} 
return date; 

}