2015-12-22 80 views
1

我想設置元素的每個功能的另一要素價值的另一個要素值。 我的腳本(JS):設置在各功能的jQuery

function getTotal() { $(':input[id^="barang_qty[]"]').keyup(function() { 
var total = 0; 
var $inputs = $(':input[id^="barang_qty[]"]'); 
$inputs.each(function (index) { total += parseFloat($(this).val()) * parseFloat($(this).attr('data-price')); 
     $("#barang_total[]").val(total); 
    }); 
$('#total').val(total); 
}); 

HTML:

<td class="price"> 
        <input type="text" name="barang_unit_price[]" readonly id="barang_unit_price[]" class="form-control"> 
        </td> 
        <td> 
        <input type="text" name="barang_qty[]" id="barang_qty[]" onkeyup="getTotal()" class="form-control" > 
        </td> 
        <td> 
        <input type="text" name="barang_total[]" class="sum form-control" > 
        </td> 

但元素barang_total仍然是空的。

的問候,感謝您

回答

1

的問題是你在getTotal方法添加KEYUP處理程序,所以第一個鍵上沒有做任何的計算。

相反,無論是你可以做的getTotal()方法計算,用內嵌調用

function getTotal() { 
    var total = 0; 
    var $inputs = $('input[name="barang_qty[]"]'); 
    $inputs.each(function(index) { 
    var sum = parseFloat($(this).val()) * parseFloat($(this).attr('data-price')) || 0; 
    total += sum; 
    $(this).closest('tr').find('[name="barang_total[]"]').val(sum); 
    }); 
    $('#total').val(total); 
} 

或者使用DOM準備處理程序來註冊事件處理程序,而不是使用內聯事件處理程序。

<input type="text" name="barang_qty[]" id="barang_qty[]" class="form-control" > 

然後

jQuery(function() { 
    $('input[name="barang_qty[]"]').keyup(function() { 
    var total = 0; 
    var $inputs = $('input[name="barang_qty[]"]'); 
    $inputs.each(function(index) { 
     var sum = parseFloat($(this).val()) * parseFloat($(this).attr('data-price')) || 0; 
     total += sum; 
     $(this).closest('tr').find('[name="barang_total[]"]').val(sum); 
    }); 
    $('#total').val(total); 
    }); 
}) 

注:如果您在處理動態的元素,那麼你將不得不使用事件代表團

演示:Fiddle

+0

感謝,但仍然不是barang_total價值的工作。它仍然是空的。我會爲這個barang_total – reefman

+0

查看更詳細@reefman小提琴似乎是工作......你可以嘗試重現該問題 –

+0

似乎導致只有一個barang_total,如果有兩個或兩個以上barang_total行,值wiil是相同的 – reefman

1

試試這個

function getTotal() { $(':input[id^="barang_qty[]"]').keyup(function() { 
     var total = 0; 
     var $inputs = $(':input[id^="barang_qty[]"]'); 
     $inputs.each(function (index) { total += parseFloat($(this).val()) * parseFloat($(this).attr('data-price')); 
     (function (total) { 
      $("#barang_total[]").val(total); 
     })(total); 
    }); 
    $('#total').val(total); 
}); 
1

您錯過了輸入的ID名稱barang_total[]

試試這個,(我在jsbin測試,它的工作)

<td class="price"> 
    <input type="text" name="barang_unit_price[]" readonly id="barang_unit_price[]" class="form-control" value="100"> 
    </td> 
    <td> 
    <input type="text" name="barang_qty[]" data-price="100" id="barang_qty[]" onkeyup="getTotal()" class="form-control" value="2"> 
    </td> 
    <td> 
    <input type="text" name="barang_total[]" id="barang_total[]" class="sum form-control" > 
    </td> 

JS

function getTotal() { 
    $(':input[id^="barang_qty[]"]').keyup(function() { 
    var total = 0; 
    var $inputs = $(':input[id^="barang_qty[]"]'); 
    $inputs.each(function (index) { 
    total += parseFloat($(this).val()) * parseFloat($(this).attr('data-price')); 
    $(':input[id^="barang_total[]"]').val(total); //edited this line 
    }); 
    $('#total').val(total); 
    }); 
} 

演示:http://jsbin.com/kijifisinu/edit?html,js,output

+0

感謝更新,但仍然不是barang_total價值的工作。 – reefman

+0

請訪問演示鏈接以查看結果。如果您有任何問題,您需要演示以顯示您的代碼。任何人在審查時都可以提供幫助。 :) – Vuong

+0

謝謝這是我的錯,,是的,我錯過了輸入有名字barang_total []的ID。 – reefman