как вызвать функцию JavaScript? - PullRequest
0 голосов
/ 31 января 2012

У меня есть функция java-скрипта, которая помогает рассчитать общую стоимость, взяв цену * за качество

<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>

, однако при загрузке default.aspx txtQuality извлекает значение счетчика изтаблица базы данных, но как будет работать javascript, если изменяется только значение таблицы, , но помимо этого я также хочу получить результат, который при загрузке default.aspx будет иметь значение lblTotal, рассчитанное с помощью javascript:используя значение счета * цена

 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 ]

1 голос
/ 31 января 2012

Просто вызовите события при загрузке страницы, чтобы выполнить необходимый код и установить метку.

   $(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");
   });
0 голосов
/ 31 января 2012

Вы можете .trigger() события из вашего обработчика загрузки или, что лучше, из вашего обработчика document.ready:

$(document).ready(function() {
   $("[id*=txtQuality]").trigger("change")
                        .trigger("keyup");
});

Или, если ваши изменения и привязки клавиш сделаны в вашей загрузке или документе. В любом случае вы можете просто связать .trigger() вызовы:

$(document).ready(function() {
   $("[id*=txtQuality]").live("change", function() {
        // your function body here
   }).trigger("change");

   // and the same for keyup
});

Или вы можете изменить свой код, чтобы он не использовал анонимные функции для ваших обработчиков событий, чтобы вы могли вызывать функцию напрямую из других мест:

// 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...