Reputation: 45
i have a java script function which help to calculate the total cost by taking the price * by the quality
<script type="text/javascript">
$("[id*=txtQuality]").live("change", function () {
if (isNaN(parseInt($(this).val()))) {
$(this).val('0');
} else {
$(this).val(parseInt($(this).val()).toString());
}
});
$("[id*=txtQuality]").live("keyup", function () {
if (!jQuery.trim($(this).val()) == '') {
if (!isNaN(parseFloat($(this).val()))) {
var row = $(this).closest("table");
$("[id*=lblTotal]", row).html(parseFloat($("[id*=price]", row).html()) * parseFloat($(this).val()));
}
} else {
$(this).val('');
}
});
</script>
however when load the default.aspx, the txtQuality will retrieve a count value from the database table , but how the javascript will work if only the table value is change, but beside that i also want to have a result that when default.aspx is load, the "lblTotal" have a amount calculate by the javascript by using the count value * price
Protected Sub GridView1_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim txt As TextBox = DirectCast(e.Row.FindControl("txtQuality"), TextBox)
Dim adapter As New SqlDataAdapter
Dim ds As New DataSet
'Dim sql As String
Dim connectionString = ConfigurationManager.ConnectionStrings("ProjData").ConnectionString
Dim myConn As New SqlConnection(connectionString)
Dim cmd = "Select * From Product Where customerID='" & Session("customerID") & "' "
' Dim myCmd As New SqlCommand(cmd, myConn)
Try
myConn.Open()
Dim myCmd As New SqlCommand(cmd, myConn)
adapter.SelectCommand = myCmd
adapter.Fill(ds, "Product")
adapter.Dispose()
myCmd.Dispose()
txt.Text = ds.Tables(0).Rows.Count
Catch ex As Exception
MsgBox("Can not open connection ! ")
End Try
End If
End Sub
<table style="width: 79%; height: 31px;">
<tr>
<td class="style1">
<asp:Label ID="Label7" runat="server" Text="price $"></asp:Label>
</td>
<td >
<asp:Label ID="price" runat="server" Text='<%# Bind("costPerTable") %>' ></asp:Label>
</td>
</tr>
<tr>
<td class="style1">
<asp:Label ID="Label2" runat="server" Text="Quantity"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtQuantity" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td class="style1">
<asp:Label ID="Label8" runat="server" Text="Total Cost:"></asp:Label>
</td>
<td>
$<asp:Label ID="lblTotal" runat="server" ></asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
Upvotes: 0
Views: 1013
Reputation: 69905
Just trigger the events on page load which will execute the required code and set the label.
$(document).ready(function(){
$("[id*=txtQuality]").live("change", function () {
if (isNaN(parseInt($(this).val()))) {
$(this).val('0');
} else {
$(this).val(parseInt($(this).val()).toString());
}
}).trigger("change");
$("[id*=txtQuality]").live("keyup", function () {
if (!jQuery.trim($(this).val()) == '') {
if (!isNaN(parseFloat($(this).val()))) {
var row = $(this).closest("table");
$("[id*=lblTotal]", row).html(parseFloat($("[id*=price]", row).html()) * parseFloat($(this).val()));
}
} else {
$(this).val('');
}
}).trigger("keyup");
});
Upvotes: 1
Reputation: 150010
You can .trigger()
the events from your onload handler, or, better, from within your document.ready handler:
$(document).ready(function() {
$("[id*=txtQuality]").trigger("change")
.trigger("keyup");
});
Or if your change and keyup bindings are done in your load or document.ready anyway you can just chain the .trigger()
calls:
$(document).ready(function() {
$("[id*=txtQuality]").live("change", function() {
// your function body here
}).trigger("change");
// and the same for keyup
});
Or you can change your code to not use anonymous functions for your event handlers so that you can call the function directly from other places:
// declare function to be called on change
function myChangeHandler() {
// your existing change handler code here
}
// bind event to function
$(("[id*=txtQuality]").live("change", myChangeHandler);
// then you can call the function from other places, including onload:
myChangeHandler();
// and the same for your keyup
Upvotes: 0