0

我有一个调用数据库以获取自动完成数据的脚本。

一旦选择了特定的自动完成数据(项目名称),就会填充一些其他字段,即:项目代码、价格和数量。

当数量更改时,行总计字段更改为“数量 * 价格”总计。

可以选择以相同的方式动态添加行并自动完成每个行......有一个总计将每行总计相加。

我的问题是总计仅在更改数量时才会更改,它应该加载每行中的价格焦点 - 此外,删除一行不会从总计中删除特定的行总计金额,如果您更改非常第一行数量(仅第一行受到影响)它将总计重新设置为该行现在加起来的任何内容......请有人看看我的代码。

现场版本位于 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 和类一起工作而不会干扰,将很快发布它。

4

1 回答 1

0

我通过执行以下操作解决了这个问题:

            ( function($) {
        var pounter = 1;
        $(document).ready(function(){
            var qounter = 1;
            var trounter = 1;

                //Count each instance and add number to Name
                $row.find('._ext_price_total_html').each(function() {
                $(this).attr({
                'name': function(_, name) {
                    return name + pounter },
                    });
                pounter++;
                })
            $row.find('.quantitys').each(function() {
                $(this).attr({
                'name': function(_, name) {
                    return name + qounter },
                    });
                qounter++;
                })  
            $('#quantity', function(){
                var Tsum = 0;
                $('[id^="_ext_price_total_html"]').each(function() {
                    if(!isNaN(this.value) && this.value.length!=0) {
                    Tsum += parseFloat(this.value);
                    }
                        $('.toTally').val(Tsum.toFixed(2))                                                          
                })
                })
                $('#quantity').change(function(){
                var Tsum = 0;
                $('[id^="_ext_price_total_html"]').each(function() {
                    if(!isNaN(this.value) && this.value.length!=0) {
                    Tsum += parseFloat(this.value);
                    }
                        $('.toTally').val(Tsum.toFixed(2))                              
                    })
                })
                $('#quantity').keyup(function(){
                var Tsum = 0;
                $('[id^="_ext_price_total_html"]').each(function() {
                    if(!isNaN(this.value) && this.value.length!=0) {
                    Tsum += parseFloat(this.value);
                    }
                        $('.toTally').val(Tsum.toFixed(2))
                })
                })
        //adjust/subtract from total when removeing row 

        $('#deleteRow').live('click',function(){
var delAsk = confirm('Remove this item?');
        if (delAsk)
        {
        $(this).parents('.jshop_prod_cart').remove();
            var Tsum = 0;
                $('[id^="_ext_price_total_html"]').each(function() {
                    if(!isNaN(this.value) && this.value.length!=0) {
                    Tsum += parseFloat(this.value);
                    }
                        $('.toTally').val(Tsum.toFixed(2))

                })
        }
        else
        {
            ('cancel');
            }
                });
于 2013-05-16T10:15:23.727 回答