更改文本框格式时,Javascript 代码不会运行

本文关键字:代码 Javascript 运行 文本 格式 | 更新日期: 2023-09-27 18:30:32

嗨,我正在使用下面的java脚本代码在asp网格视图中进行一些计算

如果我在网格视图中更改文本框格式,代码将无法运行

例如

<ItemTemplate>
<asp:TextBox ID="txtCalcCommision" TextMode="Number" placeholder="Eenter Commision" runat="server" CssClass="form-control"  ></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>

除了代码完美运行

JavaScript代码

<script type="text/javascript">
    $(document).ready(function () {
        $("[id*=GvProducts]input[type=text][id*=txtCalc]").on('keyup', (function (e) {
            var Costprice = $(this).closest('tr').find("input[type=text][id*=txtCalcCostPrice]").val();
            var quantity = $(e.target).closest('tr').find("input[type=text][id*=txtCalcQuantity]").val();
            var Commision = $(this).closest('tr').find("input[type=text][id*=txtCalcCommision]").val();
            var getunitprice = (parseFloat(Commision / 100 * Costprice)) + parseFloat(Costprice);
            var total = getunitprice * quantity;
            $(e.target).closest('tr').find("[id*=lblunitprice]").text(getunitprice);
            $(e.target).closest('tr').find("[id*=lblTotal]").text(total);
            GrossTotal();
        }));
    });
    var gross;
    function GrossTotal() {
        gross = 0;
        $("[id*=GvProducts][id*=lblTotal]").each(function (index, item) {
            gross = gross + parseInt($(item).text());
        });
        $("[id*=lblGrandTotal]").text(gross);
    }
</script>

更改文本框格式时,Javascript 代码不会运行

ClientIDMode="Static"添加到文本框中。 ASP.NET 将在呈现页面时更改 ID,除非您将 ClientIDMode 设置为"静态"。

您是否尝试过在键控功能中放置debugger;行?它可能正在上线,但函数中的代码未正常运行。

[id*=GvProducts]这不包括在您提供的 HTML 中。我真的无法判断这是否会影响 CSS 选择器查找文本框控件。

<ItemTemplate>假设这是来自中继器...在这种情况下,最好使用$("input.form-control")来查找控件。ASP.NET 将做一大堆事情来唯一化 ID,当它位于中继器中时。

选项 1:

改变:

 $("[id*=GvProducts]input[type=text][id*=txtCalc]").on('keyup', (function (e) {

 $("[id$=txtCalcCommision]").on('keyup', (function (e) {

由于 id 是唯一的,因此一个简单的结尾 with 选择器就可以完成这项工作。

选项 2 :

由于您没有使用@Nick提到的ClientIDMode="Static",因此您需要获取服务器生成的 id 作为选择器 ID。

$("<%=txtCalcCommision.ClientID%>").on('keyup', (function (e) {

选项 3 :

ClientIDMode="Static"添加到 asp.net 控件:

<asp:TextBox ID="txtCalcCommision" ClientIDMode="Static" TextMode="Number" placeholder="Eenter Commision" runat="server" CssClass="form-control" ></asp:TextBox>

$("#txtCalcCommision").on('keyup', (function (e) {