0

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>

2 Answers 2

1

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");
   });
Sign up to request clarification or add additional context in comments.

2 Comments

but this javascript is in aspx, how to put in on page load ? i put the trigger in it doesn't work, so
Wrap it inside $(document).ready(function(){}). Check my edited answer.
0

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.