我正在ASP.NET中使用Gridview创建表单。用户填写数量和价格时,需要自动计算总计。但是,我的Total总是返回Nan(不是数字)。我究竟做错了什么?
ASP页面如下所示:
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Item" HeaderText="Item" />
<asp:BoundField DataField="Price" HeaderText="Item_Desc" ItemStyle-CssClass="price" />
<asp:TemplateField HeaderText="Jumlahdatang" >
<ItemTemplate >
<asp:TextBox ID="Qty" runat="server" ></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Harga Satuan" >
<ItemTemplate>
<asp:TextBox ID="price" runat="server" ></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Harga Total" >
<ItemTemplate >
<asp:Label ID="total" runat="server" Text="0" ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
JavaScript:
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
// give value 0 first time
$(function() {
$("[id*=Qty]").val("0");
$("[id*=price]").val("0");
$("[id*=total1]").val("0");
});
//check data must number on Qty
$("[id*=Qty]").live("change", function() {
if (isNaN(parseInt($(this).val()))) {
$(this).val('0');
} else {
$(this).val(parseInt($(this).val()).toString());
}
});
//check data must number on price
$("[id*=price]").live("change", function() {
if (isNaN(parseInt($(this).val()))) {
$(this).val('0');
} else {
$(this).val(parseInt($(this).val()).toString());
}
});
$("[id*=price]").live("keyup", function() {
if (!jQuery.trim($(this).val()) == '') {
if (!isNaN(parseFloat($(this).val()))) {
var row = $(this).closest("tr");
$("[id*=total]", row).html(parseFloat($(".Qty", row).html()) * parseFloat($(this).val()));
}
} else {
$(this).val('');
}
});
if (isNaN(parseInt($(this).val()))) {
为什么同时使用isNan和parseInt?
我认为应该是:
if (isNaN($(this).val()))
如果val = string,则返回true;如果number,则返回false
另一个..如果将它们的值用于公式中,则只需要parseInt ..
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句