Give all of your "day" inputs the same class (say, "DayInput"). Do the same
for the total divs (eg, "TotalDiv"). Then wrap each group of DayInputs,
together with their corresponding TotalDiv in a div or tbody (you can have
several of those in a table).
Now, assign a handler to each $('.DayInput') which will locate and update
the correct TotalInput based on its parent div or tbody. Something like:
$(this).parent('tbody').children('.TotalInput')
On Tue, Dec 2, 2008 at 7:23 AM, Jett <[EMAIL PROTECTED]> wrote:
>
>
> I'm relatively a newbie to jQuery. I am trying to create a timesheet
> application. One of the things I am attempting to do is have the
> totals column for each task.
>
> I have the several textboxes laid out beside the text name (one
> textbox per day, so 7 textboxes for the individual days + 1 for the
> total column). The textboxes are named using the following convention:
> ta_[taskid]_[calendar date]. The totals row is named tatoal_[taskid].
>
> So I have something like this:
>
> <input type="text" name="ta_1_20081117" value="0" id="ta_1_20081117" /
> >
> <input type="text" name="ta_1_20081118" value="0" id="ta_1_20081118" /
> >
> <input type="text" name="ta_1_20081119" value="0" id="ta_1_20081119" /
> >
> <input type="text" name="ta_1_20081120" value="0" id="ta_1_20081120" /
> >
> <input type="text" name="ta_1_20081121" value="0" id="ta_1_20081121" /
> >
> <input type="text" name="ta_1_20081122" value="0" id="ta_1_20081122" /
> >
> <input type="text" name="ta_1_20081123" value="0" id="ta_1_20081123" /
> >
> <input type="text" name="tatotal_1" style="width:25px;" value=""
> id="tatotal_1" />
>
> Right now, I am able to dynamically set a function (updateTotals) to
> fire whenever one of the "day" textboxes are changed. The callback
> function looks like this:
>
> function updateTotal() {
> total = 0;
> $("[EMAIL PROTECTED]'ta_" + "1" + "']").each(function(i,v){
> if(!isNaN(parseInt(v.value))) {
> total += parseInt(v.value);
> };
> });
> $("[EMAIL PROTECTED]'tatotal_" + "1" + "']").val(total);
> }
>
> The event is bound to the textboxes using the following code
>
> $("input[name^='ta_1']").change(updateTotal);
>
> I will have several rows of textboxes (e.g. ta_2, ta_3, ... ). Is
> there a way for me to pass a parameter to the updateTotal callback so
> have it do the totals for all of the tasks in the form?
>
> Any other more efficient algorithms with greatly be appreciated.
>
> Jett
>