0

I have a unique situation... I have the below code which currently allows me to select a date referenced from a week, from a combo box. I want to have the week (date) selected automatically depending on which day it is. For example, it's the 3rd of December today which falls under week 22... How do I default the combo box to display week 22? Should I have done this with a different method as in future the week dates will change?

<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>

I also have this code for my jquery datepicker, which displays the weeks correctly next to the date, but does not auto select the appropriate date depending on current week...

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/

atomapps
  • 183
  • 1
  • 3
  • 13

1 Answers1

0

Use .filter() and .prop():

DEMO: http://jsbin.com/aviVeyUW/3/edit

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

You can also do something like this:

DEMO: 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);
Dom
  • 38,906
  • 12
  • 52
  • 81
  • Dom I've changed the format a little, as I only need to have a week selected and displayed in 1 combo box. I had it before with 2... Is there a way I could get the user to select a week (also have it defaulting from start), and have it return two dates (week start and finish) to be queried in an SQL statement? – atomapps Dec 03 '13 at 03:36
  • Sorry, I am not following. Do you have a demo so I can get a better understanding of what you are looking for? – Dom Dec 03 '13 at 03:41
  • I posted a new question as you answered this one spot on, but I am asking something totally different now :D http://stackoverflow.com/questions/20342541/return-2-dates-from-single-combo-box-to-query-mysql-db – atomapps Dec 03 '13 at 03:53