【发布时间】:2014-01-07 05:49:53
【问题描述】:
我正在使用 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('');
}
});
【问题讨论】:
-
如果您的某个字段中的某个值无法解析为整数,则可能会发生这种情况。
-
添加引号(单引号或双引号) javascript 会将值读取为字符串。我会删除您输入值中的引号。
-
也许您的输入中有逗号作为小数分隔符?
-
感谢您的回答。我输入整数类型值(1,2,3,4)并返回nan。
标签: javascript asp.net javascript-events