我在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('');
}
});
答案 0 :(得分:0)
if (isNaN(parseInt($(this).val()))) {
为什么你同时使用isNan和parseInt?
我认为应该是:
if (isNaN($(this).val()))
如果val = string则返回true,如果是数字
则返回false另一个..如果你要在公式中使用它们的值,你只需要parseInt。
答案 1 :(得分:0)
这是您的纯化代码:
<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($(this).val())) {
$(this).val(0);
}
});
//check data must number on price
$("[id*=price]").live("change", function() {
if (isNaN($(this).val())) {
$(this).val(0);
}
});
$("[id*=price]").live("keyup", function() {
var row = $(this).closest("tr");
$("[id*=total]", row).html(parseFloat($(".Qty", row).val()) * parseFloat($(this).val()));
});