如果下拉列表更改PHP + JS,则金额会发生变化

时间:2018-01-08 12:57:08

标签: javascript php laravel

在下表中,我有两个名为“Jacket”和“Uniform”的项目。每个项目都有一个下拉列表以选择所需的数量。我想要发生的是数量变化时自动更改的金额。例如,制服的单价是1,400比索。如果用户希望购买2件制服,金额将自动从1,400比索变为2,800比索。对于“夹克”,金额会在数量变化时自动更改。夹克的单价是700比索。因此,当数量从1变为2时,金额从700变为1,400比索。我不明白为什么同样不会发生“统一”,也就是说,当数量变化时,数量不会发生变化。任何帮助将不胜感激。请参阅下面的代码。非常感谢你。

这是我的代码:
PHP

 @foreach($data['tuition_other'] as $other)
     <tr>
         <td>{{Hashids::encode($other->id)}}</td>
         <td>{{$other->item_name}}</td>
         <td id="item_amt">{{number_format($other->item_amount,2,'.',',')}}</td>
         <td>
             <select name="item_quantity" class="iqty_class" id="iqty_id">
                 @for ($i=1; $i<=$other->max_quantity; $i++)                                                                            
                     <option value="{{ $i }}">{{ $i }}</option>
                 @endfor
             </select>
             <input type="hidden" id="item_val" value="{{ $other->item_amount }}">
         </td>
         <? $total_other += $other->item_amount; ?>
     </tr>
 @endforeach

JS

$('body').on('change','.iqty_class', function(){
    var item_amt = $('#item_val').val();
    var item_qty = $('.iqty_class').val();
    var total_amt =  item_amt * item_qty;
    var c = total_amt.toLocaleString('en-US', {minimumFractionDigits: 2});
    $("#item_amt").html(c);
}); 

1 个答案:

答案 0 :(得分:1)

尝试这样做:

刀片

@foreach($data['tuition_other'] as $other)
     <tr>
         <td>{{Hashids::encode($other->id)}}</td>
         <td>{{$other->item_name}}</td>
         <td class="item_amt">{{number_format($other->item_amount,2,'.',',')}}</td>
         <td>
             <select name="item_quantity" class="iqty_class" id="iqty_id">
                 @for ($i=1; $i<=$other->max_quantity; $i++)                                                                            
                     <option value="{{ $i }}">{{ $i }}</option>
                 @endfor
             </select>
             <input type="hidden" class="item_val" value="{{ $other->item_amount }}">
         </td>
         <? $total_other += $other->item_amount; ?>
     </tr>
 @endforeach

JS:

$('body').on('change','.iqty_class', function(){
    var item_amt = $(this).parent().children('.item_val').val();
    var item_qty = $(this).val();
    var total_amt =  item_amt * item_qty;
    var c = total_amt.toLocaleString('en-US', {minimumFractionDigits: 2});
    $(this).parent().parent().children('.item_amt').html(c);
});