フォーム リストの更新を作成しました。そして、すべての行にはテキストボックスのセットがあります。各テキストボックスには、クエリ結果に基づいた独自の値があります。各列の最後には選択ボックスがあります。また、有効または無効を選択できます。ユーザーが各行の INVALID ステータスを選択した場合、私の目標は単純です。数量と価格および合計の値は 0 に設定され、以下の計算は、選択に設定されたアイテム/行に基づいて減少します。INVALID の場合、選択した行が小計金額から差し引かれます。
問題:
- ユーザーがステータスをINVALIDに設定した場合のトリガーでは問題はありませんが、ユーザーが選択をトリガーしてVALIDに戻した場合。自分の価値を取り戻すことはできません。
- ユーザーが を INVALID に設定した場合、小計の合計は差し引かれません。その方法がわからないからです。
以下に私のコードの一部を示します。
Here is my jquery section:
$('[id^=qty],[id^=price]').on('change',function() {
var index = this.id.match(/\d+/)[0];
var qty = parseInt($('#qty'+index).val());
var price = parseFloat($('#price'+index).val());
var total = 0;
$('#total'+index).val((qty * price ? qty * price : 0).toFixed(2));
var total = 0;
$('[id^=total]').each(function(index){
total+=parseFloat($(this).val()?$(this).val():0);
});
$('#sum_of_total').val(total.toFixed(2));
var vatable = total / 1.12;
var vatable_amt = vatable * 0.12;
var totalVat = vatable + vatable_amt;
$('#vatable').val(vatable.toFixed(2));
$("#vatable_amount").val(vatable_amt.toFixed(2));
$("#gtotal").val(totalVat.toFixed(2));
});
$('[id^=status_validate]').on('change',function(){
var index = this.id.match(/\d+/)[0];
var status_set = $("#status_validate"+index).val();
var price_set = $("#price"+index).val();
var qty_set = $("#qty"+index).val();
var total_set = $("#total"+index).val();
var temp_price = price_set;
var temp_qty = qty_Set;
var temp_total = tota_set;
console.log(status_set);
if(status_set == 'VALID'){
$("#price"+index).val(price_set);
$("#qty"+index).val(price_set);
$("#total"+index).val(price_set);
}else{
price_set = 0.00;
qty_set = 0.00;
total_set = 0.00;
$("#price"+index).val(price_set);
$("#qty"+index).val(price_set);
$("#total"+index).val(price_set);
}
});
そして、これがループ部分です
$val = 0;
foreach($order_info_list->result_array() as $details){
$val++;
$vatable_input = $details['vatable_input'];
$vatable_amount = $details['vatable_amount'];
$total_amount_due = $details['total_amount_due'];
echo "<tr>";
echo "<td><input type='text' name='itemdesc[]' value = ".$details['item_desc']." /></td>";
echo "<td><input type='text' name='qty[]' value=".$details['item_qty']." id='qty{$val}' /></td>";
echo "<td><input type='text' name='price[]' value=".number_format($details['item_price'],2)." id='price$val' /></td>";
echo "<td><input type='text' name='total[]' class='k-textbox' id='total{$val}' style='font-family: courier; text-align: right; background-color: lightgray; color: red' readonly='readonly' value='".$details['total']."' /></td>";
echo "<td width='30%'>";
$stat = $details['status'];
echo "<select name='status[]' id='status_validate[$val]'>";
if($stat == 'VALID'){
echo "<option value='VALID' selected='selected'>VALID</option>";
echo "<option value='INVALID'>INVALID</option>";
}else{
echo "<option value='VALID'>VALID</option>";
echo "<option value='INVALID' selected='selected'>INVALID</option>";
}
echo "</select>";
echo "</td>";
echo "</tr>";
$idx = $details['poid'];
echo "<input type='hidden' name='idx[]' value='{$idx}' />";
$code_x = $details['order_code'];
}
以下は、合計計算の表示です
<tr>
<td></td>
<td></td>
<td></td>
<td>VATable Amount:</td>
<td><input type="text" class="k-textbox" value="0.00" readonly="readonly" style="color: red; text-align: right; font-family: courier" name="vatable" id="vatable" /></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td>VAT Input:</td>
<td><input type="text" class="k-textbox" value="0.00" readonly="readonly" style="color: red; text-align: right; font-family: courier" name="vatable_amount" id="vatable_amount" /></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td>TOTAL AMOUNT DUE:</td>
<td><input type="text" class="k-textbox" value="0.00" readonly="readonly" style="color: red; text-align: right; font-family: courier" name="subtotal" id="gtotal" /></td>
</tr>
ここにフィドルがありますhttp://jsfiddle.net/y6d8m/4