0

コンテナDivがdisplayblockに設定されている場合、jQueryを介して特定の名前の入力のすべての値を合計する方法を考えています。

何かのリンクif ($('#product_' + this.alt).css('display','block')) {

次に.each、次のような入力をフェッチすることで合計する必要があります。

$('#product_price_total_PRI_' + this.alt).val

それらすべてをどのようにまとめるかについてのアイデアはありますか?

編集:

明らかに、明確にする必要があります。複数のチェックボックスとラジオボタンのaltタグに含まれているのは、非表示のコンテナとフィールドのIDに対応するIDです。したがって、チェックされているボタンとチェックボックスの組み合わせによって、ここに表示されているように表示される非表示領域が決まります。

function product_analysis_global() {
$(':checked').each(function(){
    $('#product_' + this.alt).css('display','block');
    $('#product_quantity_PRI_' + this.alt).val(this.value);
    var quantity = $('#product_quantity_PRI_' + this.alt).val();
    var price = $('#product_price_PRI_' + this.alt).val();
    var duration = $('#product_duration_PRI_' + this.alt).val();
    var dives = $('#product_dives_PRI_' + this.alt).val();
    var hire = $('#product_quantity_PRI_' + this.alt).val();

    $('#product_price_total_PRI_' + this.alt).val(price * quantity);
    $('#product_duration_total_PRI_' + this.alt).val(duration * quantity);
    $('#product_dives_total_PRI_' + this.alt).val(dives * quantity);
    $('#product_hire_total_PRI_' + this.alt).val(hire * quantity);

}); 

必要なのは、「GT_grand_total」というフィールドで'#product_price_total_PRI_' + this.alt).val()'、パネル'#product_' + this.altが表示されている場合にのみ、その領域のすべてのフィールドの合計になります。

4

3 に答える 3

1
var sum = 0;
$("#specific_name_1, #specific_name_2").not(":hidden").each(function(){
    var i = parseInt($(this).val(), 10);
    if(i){
        sum += i;
    }
});
$("#grand_total").val(sum);

:hiddenセレクターの定義 http://api.jquery.com/hidden-selector/

于 2011-01-26T13:41:11.793 に答える
1

ブロックされていない表示アイテムが表示されない場合は、jquery:visibleセレクターを使用できます

if ($('#product_' + this.alt).is(":visible")) {...}

http://api.jquery.com/visible-selector/

于 2011-01-26T13:42:03.260 に答える
1

あなたの条件によって

var arr = $("div[id*='product_']").not(":hidden").map(function(){
  return $(this).find("input[id*='product_price_total_PRI_']").val();
}).get(); 



var total = 0;
$.each(arr,function() {
    total += parseInt(this);
});
alert(total);

または合計

var total = eval(arr.join('+'));

alert(total);

実施例

http://jsfiddle.net/wB5Hh/2/

于 2011-01-26T14:20:07.090 に答える