在一个页面中有一个GRID,它生成的列表中,在每一行都有两个输入框,在其中的一个输入值后,它的值会自动乘以一个数,然后显示到另一个输入框中,如何实现,要不刷新的。
------解决方案--------------------------------------------------------
你的GRID是什么做的?如果是table,那么可以
使用parentNode.parentNode查找到所在的行,然后就可以找到该行的其他输入框了。
------解决方案--------------------------------------------------------
如果两个textbox的位置不相邻,要根据情况修改nextSibling.
- C# code
<form id="form1" runat="server"> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> <Columns> <asp:BoundField DataField="ID" HeaderText="ID" /> <asp:BoundField DataField="Name" HeaderText="Name" /> <asp:TemplateField HeaderText="InputOne"> <ItemTemplate> <asp:TextBox ID="TextBox1" runat="server" onblur="Caculate(this)"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="InputTwo"> <ItemTemplate> <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> <script type="text/javascript"> function Caculate(obj){ if(obj.value.length<=0){ return; } var ct = 5; var PN = obj.parentNode; while(PN.tagName!="TD") PN=PN.parentNode; var nt = PN.nextSibling; while(nt.tagName!="TD") nt = nt.nextSibling; var ntTxt = nt.firstChild; ntTxt.value = ct*obj.value; } </script> </form>