Пользовательские недели (первая неделя, начинающаяся в июле), код для расчета номера недели и выбор

0

У меня есть уникальная ситуация... У меня есть код ниже, который в настоящее время позволяет мне выбирать дату, указанную с недели, из поля со списком. Я хочу, чтобы неделя (дата) выбиралась автоматически в зависимости от того, в какой день она. Например, это 3 декабря сегодня, которое подпадает под неделю 22... Как по умолчанию ящик со списком отображает неделю 22? Должен ли я сделать это другим способом, так как в будущем меняются даты недели?

<select name="dateentryweek" id="entryweek2" onclick="javascript:loadWeekOnly1()">
        <option value=""></option><option value="2013-07-07">Week 1</option><option value="2013-07-14">Week 2</option><option value="2013-07-21">Week 3</option><option value="2013-07-28">Week 4</option>
        <option value="2013-08-04">Week 5</option><option value="2013-08-11">Week 6</option><option value="2013-08-18">Week 7</option><option value="2013-08-25">Week 8</option>
        <option value="2013-09-01">Week 9</option><option value="2013-09-08">Week 10</option><option value="2013-09-15">Week 11</option><option value="2013-09-22">Week 12</option>
        <option value="2013-09-29">Week 13</option><option value="2013-10-06">Week 14</option><option value="2013-10-13">Week 15</option><option value="2013-10-20">Week 16</option>
        <option value="2013-10-27">Week 17</option><option value="2013-11-03">Week 18</option><option value="2013-11-10">Week 19</option><option value="2013-11-17">Week 20</option>
        <option value="2013-11-24">Week 21</option><option value="2013-12-01">Week 22</option><option value="2013-12-08">Week 23</option><option value="2013-12-15">Week 24</option>
        <option value="2013-12-22">Week 25</option><option value="2013-12-29">Week 26</option><option value="2014-01-05">Week 27</option><option value="2014-01-12">Week 28</option>
        <option value="2014-01-19">Week 29</option><option value="2014-01-26">Week 30</option><option value="2014-02-02">Week 31</option><option value="2014-02-09">Week 32</option>
        <option value="2014-02-16">Week 33</option><option value="2014-02-23">Week 34</option><option value="2014-03-02">Week 35</option><option value="2014-03-09">Week 36</option>
        <option value="2014-03-16">Week 37</option><option value="2014-03-23">Week 38</option><option value="2014-03-30">Week 39</option><option value="2014-04-06">Week 40</option>
        <option value="2014-04-13">Week 41</option><option value="2014-04-20">Week 42</option><option value="2014-04-27">Week 43</option><option value="2014-05-04">Week 44</option>
        <option value="2014-05-11">Week 45</option><option value="2014-05-18">Week 46</option><option value="2014-05-25">Week 47</option><option value="2014-06-01">Week 48</option>
        <option value="2014-06-08">Week 49</option><option value="2014-06-15">Week 50</option><option value="2014-06-22">Week 51</option><option value="2014-06-29">Week 52</option>

У меня также есть этот код для моего jquery datepicker, который отображает недели правильно рядом с датой, но не автоматически выбирает соответствующую дату в зависимости от текущей недели...

function myWeekCalc(date) {
    var checkDate = new Date(date.getTime());
    // Find
    checkDate.setDate(checkDate.getDate() + 185 - (checkDate.getDay()));
    var time = checkDate.getTime();
    checkDate.setMonth(0); // Compare with Jan 1
    checkDate.setDate(1);
    return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;
}

jQuery('input[name=selectweek1]').datepicker({
    dateFormat: 'yy-mm-dd',
    changeYear: true,
    changeMonth: true,
    firstDay: 1,
    calculateWeek: myWeekCalc,
    showWeek: true,
    minDate: new Date(2013, 6, 1),
    maxDate: new Date(2014, 5, 29)
});

JSFIDDLE: http://jsfiddle.net/a2nmR/

  • 0
    создать демо в jsfiddle.net. Непонятно, в чем проблема, легче помочь, когда можно играть с кодом в консоли
  • 0
    Роджер, спасибо, Чарли, я сделаю это
Показать ещё 1 комментарий
Теги:
datepicker

1 ответ

0
Лучший ответ

Используйте .filter() и .prop():

ДЕМО: http://jsbin.com/aviVeyUW/3/edit

  $('#entryweek2 option').filter(function(index) { 
      return index === myWeekCalc(new Date());   
  }).prop('selected', true);

Вы также можете сделать что-то вроде этого:

ДЕМО: http://jsbin.com/aviVeyUW/4/edit

$('#entryweek2 option').filter(function(index) { 
      var $this = $(this),
          today = new Date(),
          weekNo = parseInt($(this).text().split('Week ')[1]);
      return weekNo === myWeekCalc(today);
}).prop('selected', true);
  • 0
    Dom Я немного изменил формат, так как мне нужно только выбрать неделю и отобразить в 1 поле со списком. У меня было это раньше с 2 ... Есть ли способ, чтобы я мог выбрать пользователя для выбора недели (также по умолчанию от начала), и заставить его вернуть две даты (начало и конец недели) для запроса в выражении SQL ?
  • 0
    Извините, я не следую. У вас есть демо, чтобы я мог лучше понять, что вы ищете?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню