On 16/02/07, Bruce MacKay <[EMAIL PROTECTED]> wrote:
>
>  Hi folks,
>
>  I have a set of n paired text input boxes (date on; date off).  Each is
> attached to Kelvin Luck's date picker plugin.
>
>  In most instances, the "date off" will be 7 days after the "date on", and
> the next "date on" will be 1 day after the preceding "date off".
>
>  So, to help the user (so that they don't have to select dates for all the
> pairs of inputs), I want to:
>  1. for a given pair, populate the "date off" text input with a date that is
> 7 days later than the one selected in the "date on" box
>  2. for the following pair, populate the "date on" input with a date that is
> 1 day later than that of the "date off" box (in step #1)
>  3. repeat step #1 and cascade this down through the rest of the pairs.
>
>  So far I can do step #1.  I can't do step #2 as I don't know how to link
> the changed value of dateoff0 to the function being called in the second
> line of the code below (i.e. what goes in xx)
>
>  $('#dateon0').change(function() {if
> (this.value.length>0)$('#dateoff0').attr("value",addTheDate(this.value,7));});
>  $('#dateoff0').xx(function() {if
> (this.value.length>0)$('#dateon1').attr("value",addTheDate(this.value,1));});
>
>  And, of course, I can't do step 3 because I'm hard coding the dateon /
> dateoff ids - there must be a way to do a loop but I can't work that out
> either.
>
>  For completeness, my date-adding function is below.
>
>  I'd really appreciate some help in filling the blanks in my capability.
>
>  Thanks,
>
>  Bruce
>
>
>
>  function addTheDate(ej,df){
>      var ar=new Array();
>      ar=ej.split('/');
>      var myDate = new Date;
>      myDate.setDate(ar[0]);
>      myDate.setMonth(ar[1]);
>      myDate.setFullYear(ar[2]);
>      myDate.setDate(myDate.getDate()+df);
>      var d = myDate.getDate();
>      var m = myDate.getMonth();
>      var y = myDate.getFullYear();
>      var dmy = d + "/" + m + "/" + y;
>      return dmy;
>  }
>
>  I'm at a loss on the xxx bit - how can I take the date that is entered into
> #dateon, add 7 days to it, and insert it into #dateoff?

Try something like this (untested):

var to = 5;
for(var i = 0; i < to; i++) {
        $('#dateon' + i).change(function() {
                if (this.value.length>0) {
                        $('#dateoff' + 
i).attr("value",addTheDate(this.value,7)).each(function() {
                                if (this.value.length>0) $('#dateon' + (i +
1)).attr("value",addTheDate(this.value,1));
                        });
                }
        });
}

_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/

Reply via email to