<asp:TemplateField HeaderText="数量">
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("[T-jpcs1]") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="a" runat="server" Text='<%# Bind("[T-jpcs1]") %>' ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="单价">
<EditItemTemplate>
<asp:TextBox ID="TextBox8" runat="server"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:TextBox ID="b" runat="server" onkeydown="checkFloat(event)" Width="100px" ></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="总金额">
<EditItemTemplate>
<asp:TextBox ID="TextBox10" runat="server"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:TextBox ID="c" runat="server" Width="100px" onkeydown="checkFloat(event)" ></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
用js
计算数量*单价=总金额
其中数量是通过数据源绑定的~单价直接在GridView上输入,输入单价后计算结果自动显示在总金额文本框内!
求js代码!
刚开始米发现最后测试时才发现不行的··5555郁闷啊··
function checkFloat(e) {
return (e.keyCode >= 48 && e.keyCode <= 57) || e.keyCode == 8 || e.keyCode == 46 || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 190 || e.keyCode == 110 ? true : false;
} function Cal(tb) {
var b = parseFloat(tb.value);
var par = tb.parentElement || tb.parentNode;
var a = parseFloat(par.previousSibling.getElementsByTagName("span")[0].innerHTML);
var tbC = par.nextSibling.getElementsByTagName("input")[0];
tbC.value = a * b;
}
</script>
<asp:TemplateField HeaderText="数量">
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("[T-jpcs1]") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="a" runat="server" Text='<%# Bind("[T-jpcs1]") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="单价">
<EditItemTemplate>
<asp:TextBox ID="TextBox8" runat="server"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:TextBox ID="b" runat="server" Width="100px" onkeydown="return checkFloat(event)" onkeyup='Cal(this)' ></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="总金额">
<EditItemTemplate>
<asp:TextBox ID="TextBox10" runat="server"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:TextBox ID="c" runat="server" Width="100px" onkeydown="return checkFloat(event)"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
报错parseFloat(par.previousSibling.getElementsByTagName("span")[0].innerHTML);为空没取到值
参考
你把生成的html源码贴上来看看
<EditItemTemplate>
<asp:TextBox ID="TextBox8" runat="server"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:TextBox ID="TextBoxf" runat="server" Width="55px" onkeydown="checkFloat(event)" onkeyup='Cal(this)' ></asp:TextBox>
</ItemTemplate>
报错parseFloat(par.previousSibling.getElementsByTagName("span")[0].innerHTML);为空或不是对象~
就是运行你的网站,然后用浏览器的“查看源码”功能
</td><td>FAB-1171/SF/XII/O8</td><td>网布</td><td>棕色</td><td>
<span id="GridView1_ctl02_a">1000</span>
</td><td>
<input name="GridView1$ctl02$TextBox4t" type="text" value="58/60"" readonly="readonly" id="GridView1_ctl02_TextBox4t" />
</td><td>
<input name="GridView1$ctl02$TextBox4" type="text" value="请添加" id="GridView1_ctl02_TextBox4" onfocus="cls()" onblur="res()" style="width:100px;" />
</td><td>
<input name="GridView1$ctl02$TextBox6" type="text" value="请添加" id="GridView1_ctl02_TextBox6" onfocus="cls()" onblur="res()" style="width:100px;" />
</td><td>
<input name="GridView1$ctl02$TextBoxf" type="text" value="0" id="GridView1_ctl02_TextBoxf" onkeydown="checkFloat(event)" onfocus="cls()" onblur="res()" onkeyup="Cal(this)" style="width:55px;" />
</td><td>
<input name="GridView1$ctl02$c" type="text" value="0" readonly="readonly" id="GridView1_ctl02_c" onkeydown="checkFloat(event)" onfocus="cls()" onblur="res()" style="width:100px;" />
</td><td>
<textarea name="GridView1$ctl02$TextBox13" rows="2" cols="20" id="GridView1_ctl02_TextBox13" onfocus="cls()" onblur="res()" style="height:50px;width:150px;">无</textarea>
</td><td>
<input name="GridView1$ctl02$TextBoxe" type="text" value="MLHT-200904110001" id="GridView1_ctl02_TextBoxe" style="height:0px;width:0px;" />
</td>
<span id="GridView1_ctl02_a">1000</span>这行是数量
var b = parseFloat(tb.value);
if (!isNaN(b)) {
var p1 = tb.parentElement || tb.parentNode;
var par = p1.parentElement || p1.parentNode;
var a = parseInt(par.childNodes[0].getElementsByTagName("span")[0].innerHTML);//这里的childNodes[0]中的0你自己换成“数量”列的索引
var tbC = par.childNodes[2].getElementsByTagName("input")[0];//这里的2你自己换成“总金额”列的索引
tbC.value = a * b;
}
}
拜谢ojlovecd大大···
结贴给分咯!
请问下span元素,在前台/后台是怎么写的呢,才让这个js语句辨别它呢???