【问题标题】:How to use Jquery with html helpers of Asp.Net Mvc Core 2.2如何将 Jquery 与 Asp.Net Mvc Core 2.2 的 html 助手一起使用
【发布时间】:2019-05-28 01:12:42
【问题描述】:

我正在使用 Asp.net mvc core 2.2 当我在 jsfiddle.net 中尝试时,下面的计算工作正常但是计算不起作用,当我在 Visual Studio 中尝试时,它显示“0.00”,所以什么也不做。

  1. 我检查了参考链接存在
  2. 我在同一个视图中包含了脚本

我的查看代码:

代码从这里开始-table class="tbl table table-striped">

TABLE HEADERS

     @{ foreach (var item in Model.Tblstsabit)
      {

      <tr style="padding:50px;">
       <td style="text-align:center">
        @Html.DisplayFor(c => item.StokKodu)
       </td>
       <td style="text-align:center">
       @Html.DisplayFor(c => item.StokAdi)
       </td>
       <td style="text-align:center">
       @Html.DisplayFor(c => item.SatisFiat1, new { @class = "unitprc" })
        @*for this part I tried <input type="text" class="unitprc"> it works in jsfiddle.net but not in VS*@
       </td>
       <td style="text-align:center;">
       <input type="text" class="qtt" />
       </td>
        <td style="text-align:center;">
        <input type="number" max="100" class="col-9" />
        </td>
         <td style="text-align:center;">
          <input type="number" max="100" class="col-9" />
       </td>
        <td style="text-align:center;">
       <input type="text" readonly value="0.00" class="sum" />
       </td>
       <td style="text-align:center">
        <button type="submit" class="btn btn-danger" asp-action="Remove" asp-route-stokkodu="@item.StokKodu">
        <img src="~/resimler/garbage.png" />
       </button>
         </td>
       </tr>
   }
}

总和:

<div class="col-4">
<label>Total Sum</label>
<input id="gsum" value="0.00" readonly />
</div>

脚本:

<script>
    $(".tbl").on("change keyup keydown paste propertychange bind mouseover", function () {
        calculateSum();
    });

    // function    
    function calculateSum() {
        var sum = 0;
        $(".sum").each(function () {
            if (!isNaN(this.value) && this.value.length != 0) {

    var quantity = $(this).closest("tr").find("input.qtt:text").val();
    var valor = $(this).closest("tr").find("input.unitprc:text").val();

    var subTot = (quantity * valor);

    $(this).val(subTot.toFixed(2));

    sum += parseFloat(subTot.toFixed(2));
            }
        });
        $('#gsum').val(sum.toFixed(2));

    }
</script>

我一直在寻找这些代码大约 9 个小时,但找不到任何不工作的原因。 Foreach循环可能是原因吗? PS:如果你打算在 jsfiddle.net 中尝试,你应该在 table 标记之间编写代码,它有一个名为 class 的“cls”

【问题讨论】:

  • “当我在 Visual Studio 中尝试时计算不起作用” - “不起作用” 是什么意思?结果错误?脚本没有执行吗?有任何错误信息吗? ...
  • 什么都不做。显示“0.00”
  • Results 部分与您的 ASP 代码不对应。它有“总和”,它不会出现在您的 ASP 中,但它省略了所有的 tabletrtd 标记,它们 在您的 ASP 代码中。你能完成你的那部分问题吗?
  • @trincot 嗨。总和部分位于底部部分,仅显示所有“总和”的总和,不需要在表中或其他地方“函数计算和()”通过 id '#gsum' 找到它。顺便说一句,代码有点长,在行中的“总和”之前不起作用

标签: jquery asp.net-core-mvc html-helper tag-helpers asp.net-core-2.2


【解决方案1】:

尝试进行以下更改

  1. 在视图代码中,将class = "unitprc"添加到@Html.DisplayFor(c =&gt; item.SatisFiat1, new { @class = "unitprc" })所在的&lt;td&gt;&lt;/td&gt;,如下所示

    <td style="text-align:center" class = "unitprc">
       @Html.DisplayFor(c => item.SatisFiat1)
     </td>
    

2.在你的 jquery 中进行一些更改,如下所示

$("input.qtt:text").on("change paste keyup" ,function () {
            calculateSum();
        });

        // function
        function calculateSum() {
            var sum = 0;
            $(".sum").each(function () {
                if (!isNaN(this.value) && this.value.length != 0) {

                    var quantity = $(this).closest("tr").find("input.qtt:text").val();
                    var valor = $(this).closest("tr").find(".unitprc").html();

                    var subTot = (quantity * valor);

                    $(this).val(subTot.toFixed(2));

                    sum += parseFloat(subTot.toFixed(2));
                }
            });
            $('#gsum').val(sum.toFixed(2));

        }

它是如何工作的

【讨论】:

  • 非常感谢。有效 :))。不过最后一件事。由于文化差异,价格使用“,”而不是“。”例如“370,23”,总和为“NaN”。你知道怎么处理吗
  • @Mayk ,在您的函数 calculateSum() 中,您可以在 `var valor = $ 末尾使用 ".replace(",",".")" (this).closest("tr").find(".unitprc").html() ` 更改价格的格式。参考stackoverflow.com/questions/21075595/…
【解决方案2】:

jQuery 正在返回一个字符串。你需要把它变成一个数字:

var quantity = parseFloat($(this).closest("tr").find("input.qtt:text").val());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 2010-09-23
    • 2019-07-10
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多