データベースを呼び出してオートコンプリート データを取得するスクリプトがあります。
特定のオートコンプリート データ (商品名) が選択されると、その他のいくつかのフィールド (商品コード、価格、数量) が入力されます。
数量が変更されると、明細合計フィールドは「数量 * 価格」合計に変わります。
行を動的に追加し、それぞれを同じ方法でオートコンプリートするオプションがあります...各行の合計を合計する総計があります。
私の問題は、数量が変更されたときにのみ総計が変更されることです。各行の価格の焦点にロードする必要があります。また、行を削除しても、その特定の行合計の金額が総計から削除されません。最初の行の数量(最初の行のみが影響を受けます)それは総計をその行が現在追加されているものにリセットします...誰かが私のコードを見てください。
ライブ バージョンは http://cardoso.co.za/form/にあります。
http://cardoso.co.za/form/form.zipを参照すると、そこからファイルを入手することもできます。
どんな助けでも大歓迎です!!!
スクリプト全体の一部のコードを編集します。
var $itemsTable = $('#itemsTable');
var rowTemp = [
'<tr class="item-row">',
'<td><a id="deleteRow"><img src="images/icon-minus.png" alt="Remove Item" title="Remove Item"></a></td>',
'<td><input name="itemType" class="itemType" id="itemType" tabindex="1" style="width:350px;"/></td>',
'<td align="center"><input name="itemCode" class="itemCode" id="itemCode" readonly="readonly" style="width:60px;" tabindex="-1"/></td>',
'<td align="center"><input name="itemQty" class="itemQty" id="itemQty" tabindex="2" style="width:40px;" maxlength="4" value=""/></td>',
'<td width="14%" align="center"><input name="itemPrice" class="itemPrice" id="itemPrice" readonly tabindex="-1"/></td>',
'<td width="17%" align="right"><input name="itemTotal" class="itemTotal" id="itemTotal" readonly tabindex="-1"/></td>',
'</tr>'
].join('');
$('#addRow').bind('click',function(){
var $row = $(rowTemp);
var $itemType = $row.find('#itemType');
var $itemCode = $row.find('.itemCode');
var $itemPrice = $row.find('.itemPrice');
var $itemQty = $row.find('.itemQty');
var $itemTotal = $row.find('.itemTotal');
if ( $('#itemType:last').val() !== '' ) {
$row.find('#itemType').autocomplete({
source: 'item-data.php',
minLength: 1,
select: function(event, ui) {
$itemType.val(ui.item.itemType);
$itemCode.val(ui.item.itemCode);
$itemPrice.val(ui.item.itemPrice);
$itemTotal.focus().val(ui.item.itemPrice);
$itemQty.focus().val(1);
$itemQty.keyup(function() {
var Quantity = $itemQty.val();
var Prices = $itemPrice.val();
var ItemsTotal = Quantity * Prices;
$itemTotal.val(ItemsTotal.toFixed(2));
var Tsum = 0;
$('.itemTotal').each(function() {
if(!isNaN(this.value) && this.value.length!=0) {
Tsum += parseFloat(this.value);
$('#toTally').val(Tsum.toFixed(2))
}
});
});
return false;
}
}).data( "autocomplete" )._renderItem = function( ul, item ) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + item.itemType + "</a>" )
.appendTo( ul );
};
$('.item-row:last', $itemsTable).after($row);
$('#minusRow').show();
$('#resetTable').show();
$($itemType).focus();
}
return false;
});
私は配列を実装しました。ジャミングせずにIDとクラスで動作するようになったら、代わりにすぐに投稿します。