【问题标题】:Calculating total price from input values with jquery使用 jquery 从输入值计算总价
【发布时间】:2015-10-29 17:00:30
【问题描述】:

我正在开发一个网络应用程序,我必须从动态添加的输入字段中计算总价。

基本上我在数据库中搜索项目,然后有一个与搜索匹配的项目的下拉列表,当我单击其中一个项目时,它会显示为如下图所示的一行。

现在我需要帮助获取所有商品的总价(数量 * 价格/单位 - 折扣(如果有))每次添加/删除商品或更改其中一个变量时,它都必须重新计算(数量、价格/单位、折扣)。

这是一些用于生成输入的代码(我使用的是 laravel 5.0)

<div class="row">
<div class="large 12 columns">
        <div class="large-1 columns">
        <label>Quantity</label>
        {!! Form::text("units[]","1") !!}
    </div>
    <div class="large-1 columns">
        <label>GroupNR</label>
        {!! Form::text("article_group[]",$item->article_group_id) !!}
    </div>
    <div class="large-3 columns">
        <label>Item name</label>
        {!! Form::text("article[]",$item->article) !!}
    </div>
    <div class="large-3 columns">
        <label>Description</label>
        {!! Form::text("description_en[]",$item->description_en) !!}
    </div>
    <div class="large-1 columns">
        <label>Price/Unit</label>
        {!! Form::text("unit_price[]",$item->base_price * $rentalPrice[$days] / 100 + $item->start_price) !!}
    </div>
    <div class="large-1 columns">
        <label>Discount</label>
        {!! Form::text("discount[]","0") !!}
    </div>
    <div class="large-1 columns">
        <label>Invoice</label>
        {!! Form::checkbox("invoice[]",null,["checked"]) !!}
    </div>
    <div class="large-1 columns">
        <label>D. Note</label>
        {!! Form::checkbox("delivery_note[]",null,["checked"]) !!}
    </div>
</div>

对于不熟悉 Laravel 的人,这是 html 输出:

<form id="itemForm">
  <div class="row">
    <div class="large-12 columns">
            <div class="large-1 columns">
            <label>Quantity</label>
            <input name="units[]" type="text" value="1">
        </div>
        <div class="large-1 columns">
            <label>GroupNR</label>
            <input name="article_group[]" type="text" value="2401">
        </div>
        <div class="large-3 columns">
            <label>Item name</label>
            <input name="article[]" type="text" value="Item 1">
        </div>
        <div class="large-3 columns">
            <label>Description</label>
            <input name="description_en[]" type="text" value="Description">
        </div>
        <div class="large-1 columns">
            <label>Price/Unit</label>
            <input name="unit_price[]" type="text" value="7500">
        </div>
        <div class="large-1 columns">
            <label>Discount</label>
            <input name="discount[]" type="text" value="0">
        </div>
        <div class="large-1 columns">
            <label>Invoice</label>
            <input checked="checked" name="invoice[]" type="checkbox">
        </div>
        <div class="large-1 columns">
            <label>D. Note</label>
            <input checked="checked" name="delivery_note[]" type="checkbox">
        </div>
    </div>
</div>
<div class="row">
    <div class="large 12 columns">
            <div class="large-1 columns">
            <label>Quantity</label>
            <input name="units[]" type="text" value="1">
        </div>
        <div class="large-1 columns">
            <label>GroupNR</label>
            <input name="article_group[]" type="text" value="1114">
        </div>
        <div class="large-3 columns">
            <label>Item name</label>
            <input name="article[]" type="text" value="Item 2">
        </div>
        <div class="large-3 columns">
            <label>Description</label>
            <input name="description_en[]" type="text" value="Description">
        </div>
        <div class="large-1 columns">
            <label>Price/Unit</label>
            <input name="unit_price[]" type="text" value="345">
        </div>
        <div class="large-1 columns">
            <label>Discount</label>
            <input name="discount[]" type="text" value="0">
        </div>
        <div class="large-1 columns">
            <label>Invoice</label>
            <input checked="checked" name="invoice[]" type="checkbox">
        </div>
        <div class="large-1 columns">
            <label>D. Note</label>
            <input checked="checked" name="delivery_note[]" type="checkbox">
        </div>
    </div>
</div>
</form>

我们将不胜感激:)

问候

【问题讨论】:

  • 最好不要在jquery/javascript中计算价格。将表单序列化的数据发送到 php 计算并返回计算响应
  • 当你添加/删除项目时,它会提交给php重新生成页面。浏览它不是动态的。那为什么不在输出前用php计算呢?

标签: php jquery laravel-5


【解决方案1】:

你可以使用:

$('.row').each(function(){
  var quantity = parseInt( $(this).find('[name="units[]"]').val(),10)
  var price = parseInt( $(this).find('[name="unit_price[]"]').val(),10)
  total += quantity * price;
});

Working Demo

【讨论】:

  • 我稍微修改了一下,就像jsfiddle.net/gpnred22 (这似乎在 jsfiddle 中不起作用,但在我的应用程序中起作用)但是,它仅在我编辑字段时起作用,而不是当我向 dom 添加行......不应该触发更改事件吗?
  • 当按下要从下拉列表中添加的项目时,我最终通过手动触发更改事件来修复它!感谢您的所有帮助
  • @JohanBjörklund:很高兴它有帮助:)
  • @MilindAnantwar,你能帮我解决这个问题吗stackoverflow.com/questions/51664720/…
猜你喜欢
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
  • 2018-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多