views:

500

answers:

2

Consider a gridview row containing two columns... Each column has two textboxes... Onkeypress in the first textbox i have to update a value in the second textbox..... Is it possible with jquery....

EDIT: Grid

I want to show Closing Advance based on Advance Detucted textbox keypress

ClosingAdvance=OpeningADvance-AdvanceDetucted....

<table class="grid-view" id="ctl00_ContentPlaceHolder1_gridEmployee" style="border: 0px none rgb(244, 242, 242); border-collapse: collapse;" border="0" cellspacing="0" rules="all">
        <tbody><tr class="gridHeaderimg">
            <th scope="col" style="width: 10%;">

                      Name
                    </th><th scope="col" style="width: 10%;">
                    Salary Basis
                    </th><th scope="col" style="width: 12%;">
                      Salary Per Day
                    </th><th scope="col" style="width: 12%;">
                     No of Days Present
                    </th><th scope="col" style="width: 12%;">
                     Opening Advance
                    </th><th scope="col" style="width: 12%;">
                     Advance Detucted
                    </th><th scope="col" style="width: 12%;">

                     Closing Advance
                    </th><th scope="col" style="width: 10%;">
                     Salary Given
                    </th>
        </tr><tr class="normal">
            <td class="GridCs" style="width: 10%;" align="left">
                      <span id="ctl00_ContentPlaceHolder1_gridEmployee_ctl02_LblEmpName">Natarajan</span>
                      <input name="ctl00$ContentPlaceHolder1$gridEmployee$ctl02$HiddenId" id="ctl00_ContentPlaceHolder1_gridEmployee_ctl02_HiddenId" value="16" type="hidden">
                    </td><td class="GridCs" style="width: 10%;" align="left">

                   <span id="ctl00_ContentPlaceHolder1_gridEmployee_ctl02_LblSalary">Weekly</span>
                  </td><td class="GridCs" style="width: 12%;" align="left">
                      <span id="ctl00_ContentPlaceHolder1_gridEmployee_ctl02_LblSalaryPerDay">150.00</span>

                  </td><td style="width: 12%;" align="center">
                      <input name="ctl00$ContentPlaceHolder1$gridEmployee$ctl02$TxtDaysPresent" id="ctl00_ContentPlaceHolder1_gridEmployee_ctl02_TxtDaysPresent" class="text_box_height_14_width_50" type="text">

                  </td><td class="GridCs" style="width: 12%;" align="left">
                      <span id="ctl00_ContentPlaceHolder1_gridEmployee_ctl02_LblOpeningAdv">500.00</span>

                  </td><td style="width: 12%;" align="center">
                      <input name="ctl00$ContentPlaceHolder1$gridEmployee$ctl02$TxtAdvanceDeducted" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$gridEmployee$ctl02$TxtAdvanceDeducted\',\'\')', 0)" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" id="ctl00_ContentPlaceHolder1_gridEmployee_ctl02_TxtAdvanceDeducted" class="text_box_height_14_width_50" type="text">

                  </td><td style="width: 12%;" align="center">
                      <input name="ctl00$ContentPlaceHolder1$gridEmployee$ctl02$TxtClosingAdvance" id="ctl00_ContentPlaceHolder1_gridEmployee_ctl02_TxtClosingAdvance" class="text_box_height_14_width_50" type="text">
                  </td><td style="width: 10%;" align="center">
                      <input name="ctl00$ContentPlaceHolder1$gridEmployee$ctl02$TxtSalary" id="ctl00_ContentPlaceHolder1_gridEmployee_ctl02_TxtSalary" class="text_box_height_14_width_50" type="text">

                  </td>
        </tr><tr class="alternate">
            <td class="GridCs" style="width: 10%;" align="left">

                      <span id="ctl00_ContentPlaceHolder1_gridEmployee_ctl03_LblEmpName">Pandian</span>
                      <input name="ctl00$ContentPlaceHolder1$gridEmployee$ctl03$HiddenId" id="ctl00_ContentPlaceHolder1_gridEmployee_ctl03_HiddenId" value="17" type="hidden">
                    </td><td class="GridCs" style="width: 10%;" align="left">
                   <span id="ctl00_ContentPlaceHolder1_gridEmployee_ctl03_LblSalary">Weekly</span>
                  </td><td class="GridCs" style="width: 12%;" align="left">
                      <span id="ctl00_ContentPlaceHolder1_gridEmployee_ctl03_LblSalaryPerDay">122.00</span>

                  </td><td style="width: 12%;" align="center">

                      <input name="ctl00$ContentPlaceHolder1$gridEmployee$ctl03$TxtDaysPresent" id="ctl00_ContentPlaceHolder1_gridEmployee_ctl03_TxtDaysPresent" class="text_box_height_14_width_50" type="text">

                  </td><td class="GridCs" style="width: 12%;" align="left">
                      <span id="ctl00_ContentPlaceHolder1_gridEmployee_ctl03_LblOpeningAdv">0.00</span>
                  </td><td style="width: 12%;" align="center">
                      <input name="ctl00$ContentPlaceHolder1$gridEmployee$ctl03$TxtAdvanceDeducted" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$gridEmployee$ctl03$TxtAdvanceDeducted\',\'\')', 0)" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" id="ctl00_ContentPlaceHolder1_gridEmployee_ctl03_TxtAdvanceDeducted" class="text_box_height_14_width_50" type="text">

                  </td><td style="width: 12%;" align="center">
                      <input name="ctl00$ContentPlaceHolder1$gridEmployee$ctl03$TxtClosingAdvance" id="ctl00_ContentPlaceHolder1_gridEmployee_ctl03_TxtClosingAdvance" class="text_box_height_14_width_50" type="text">
                  </td><td style="width: 10%;" align="center">

                      <input name="ctl00$ContentPlaceHolder1$gridEmployee$ctl03$TxtSalary" id="ctl00_ContentPlaceHolder1_gridEmployee_ctl03_TxtSalary" class="text_box_height_14_width_50" type="text">

                  </td>
        </tr>
    </tbody></table>
A: 

You still haven't provided any markup, so I have to make some assumptions. Assumption 1: "Advance Deducted" input fields have the class "adv-ded". Assumption 2: tds containing an opening advance have a class "adv-open". Assumption 3: "Closing advance" input has class "adv-close".

$('input.adv-ded').live('keypress', function(e) {
    var val;
    try {
        val = parseFloat($(this).val());
        if (val) {
            var tr = $(this).closest('tr');
            var open = parseFloat(tr.find('td.adv-open').text());
            tr.find('input.adv-close').val(open - val);
        }
    } catch (e) {

    }
});

Something like this. You might have to add some code for the formatting, but this should convey the general idea.

Tom Bartel
@Tom Bartel look at my edit
Pandiya Chendur
I was talking about HTML markup, not Microsoft-specific stuff.
Tom Bartel
@Tom Bartel ok i ll post it...
Pandiya Chendur
@Tom Bartel this is my generated html....
Pandiya Chendur
A: 

I tried using Javascript and got the answer,

function totalAmount(e, obj) {

    var tbl = document.getElementById('ctl00_ContentPlaceHolder1_gridEmployee');
    var tblRows = tbl.rows.length;
    var result = 0;
    var str1;
    if (obj != null) {
        str1 = obj.id;
    } else {
        str1 = this.id;
    }
    var Splitstr = str1.split('_');
    var lastChar = Splitstr[3].substring(3, Splitstr.length);
    if (str1 == 'ctl00_ContentPlaceHolder1_gridEmployee_ctl' + lastChar + '_TxtAdvanceDeducted') {
        var str2 = 'ctl00_ContentPlaceHolder1_gridEmployee_ctl' + lastChar + '_txtOpeningAdv';
        var str3 = 'ctl00_ContentPlaceHolder1_gridEmployee_ctl' + lastChar + '_TxtClosingAdvance';
        var txtDeduct = document.getElementById(str1).value;
        var txtOpenAdv = document.getElementById(str2).value;
        var txtCloAdv = document.getElementById(str3).value;
        var totRes = txtOpenAdv - txtDeduct;
        document.getElementById(str3).value = totRes.toFixed(2)
    }

}
Pandiya Chendur