2016-11-14 2 views
-4

Может кто-нибудь помочь мне изменить код, я хочу, чтобы мои участники выбирали воскресенье в период с марта по октябрь (каждый год). Но только 2-е или 4-е воскресенье месяца.JQuery Datepicker

Спасибо за помощь!

<!doctype html> 
 
<html lang="en"> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    <title>jQuery UI Datepicker - Default functionality</title> 
 
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 
 
    <link rel="stylesheet" href="/resources/demos/style.css"> 
 
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
 
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 
 

 
    
 
<script type="text/javascript"> 
 
    $(function() { 
 
     $("#datepic").datepicker(
 
     { beforeShowDay: function(day) { 
 
      var day = day.getDay(); 
 
      if (day == 2 || day == 5| day == 4| day == 6| day == 1| day == 3) 
 
{ 
 
       return [false, "somecssclass"] 
 
      } else { 
 
       return [true, "someothercssclass"] 
 
      } 
 
     } 
 
     }); 
 
    }); 
 
</script> 
 
</head> 
 
<body> 
 
<p>Uw voorkeursdatum: <input id="datepic"/> 
 
</body> 
 
</body> 
 
</html>

+1

Вы должны попробовать и начать разработку и задавать вопросы, если у вас есть какие-либо вопросы или увидеть ошибки. –

+0

Этот ответ должен помочь вам на вашем пути http://stackoverflow.com/a/9295262/2822450 – developius

+0

Я изменил, что вы можете выбрать только воскресенье, но что теперь? Я хочу включить только 2-е в 4-е воскресенье каждого месяца. – tiresz

ответ

0

beforeShowDay вариант является правильным местом, чтобы 2-е и 4-е воскресений только быть определена.

Для этого я использовал два «флажка» (переменную, используемую для определения определенного состояния в цикле).

Один флаг, который переключается каждый раз, когда в цикле встречается воскресение.
И один, чтобы убедиться в том, что в текущее месячное воскресенье.

DatePicker перебирает каждую ячейку таблицы в функции, предусмотренной в опции beforeShowDay.
И даже если это не «рендер», дни от предыдущего или следующих месяцев ARE, проходящий через этот цикл.

Я также использовал тайм-аут 100 мс для сброса этих флагов раз в месяц.
Это необходимо при переходе с одного месяца на другой.

Это функция, которая работает в this CodePen.
Я оставил пару полезных console.log.
;)

$(function() { 
    var even=false; 
    var inCurrentMonth=false; 

    $("#DatePicker").datepicker({ 

     beforeShowDay: function(fulldate) { 
      //console.log(fulldate); 
      var day = fulldate.getDay(); 
      var date = fulldate.getDate(); 

      // In current month when the date 1 is found. 
      if(date==1){ 
       inCurrentMonth=!inCurrentMonth; 
       // To reset values right after month draw. 
       setTimeout(function(){ 
        even=false; 
        inCurrentMonth=false; 
       },100); 
      } 

      // This condition prevents conting syndays frome the previous month. 
      if(inCurrentMonth){ 
       // If NOT a sunday. 
       if (day != 0){ 
        return [false,"Otherdays"] 
       } else { 
        // If this sunday is even (2nd or 4th) 
        if(even){ 
         even=!even; 
         return [true,"Selectable-Sunday","You can select me!"] 
        }else{ 
         even=!even; 
         return [false,"Unselectable-Sunday"] 
        } 
       } 
      } 
     } 
    }).focus(); 
});