javascript - 更新购物车中的值

标签 javascript c# asp.net-mvc razor

我正在 MVC 4 中开发购物车应用程序,我需要在更改购物车数量时更新金额。

@foreach (var item in Model)
{
    <tr>
        <td>@item.ProductId</td>
        <td>@item.Product.ProductName</td>
        <td id="PriceBx">@item.Product.UnitPrice</td>

        <td id="QtyBx" oninput="calculate()">@Html.TextBox("QuantityBox", item.Quantity, new { style = "width:50px" })</td>
        <td id="result">@String.Format("{0:c}", Convert.ToDouble(item.Quantity) * Convert.ToDouble(item.Product.UnitPrice))</td>

    </tr>
}

在此,当 QuantityBox 中的值发生变化时,我需要更新 total

我尝试使用 Javascript

<script type="text/javascript">
function calculate()
{

    var myBox1 = document.getElementById('QtyBx').value;
    var myBox2 = document.getElementById('PriceBx').value;
    var result = document.getElementById('result');
    var myResult = myBox1 * myBox2;
    result.innerHTML = myResult;
}

最佳答案

使用 foreach 生成多个元素,然后为其中的元素使用 id 属性从来都不是一个好主意,因为元素 id 必须是唯一的每个 HTML 页面。

尝试将产品 ID 附加到元素 ID:

@foreach (var item in Model)
{
    <tr>
        <td>@item.ProductId</td>
        <td>@item.Product.ProductName</td>
        <td id="PriceBx@(item.ProductId)">@item.Product.UnitPrice</td>

        <td id="QtyBx@(item.ProductId)" oninput="calculate(@(item.ProductId))">@Html.TextBox("QuantityBox", item.Quantity, new { style = "width:50px" })</td>
        <td id="result@(item.ProductId)">@String.Format("{0:c}", Convert.ToDouble(item.Quantity) * Convert.ToDouble(item.Product.UnitPrice))</td>

    </tr>
}

在你的 Javascript 中:

function calculate(itemId)
{
    var myBox1 = parseInt(document.getElementById('QtyBx' + itemId).value, 10);
    var myBox2 = parseFloat(document.getElementById('PriceBx' + itemId).value);
    var result = document.getElementById('result' + itemId);
    var myResult = myBox1 * myBox2;

    result.innerHTML = myResult;
}

(我冒昧地将您输入的值分别显式转换为 intfloat)

关于javascript - 更新购物车中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31668982/

相关文章:

c# - PGP 压缩和加密

c# - 单位转换器 C#

javascript - 使用 D3 将 SVG 文本元素 id 与数据 id 进行匹配

javascript - Kendo Scheduler 不显示数据

php - 拼写检查器在 tinymce 4.0 中不起作用(非 JSON 响应)

c# - 如何更改 Short 中的位

javascript - jquery搜索框和按钮

c# - 编码导出 CSV 文件的问题

c# - SignalR 聊天应用程序发送图像

jquery - 如何从 MVC 中的主视图内部刷新/重新加载部分 View