2011-01-26 3 views
0

Je réfléchis à la façon dont vous ajouteriez toutes les valeurs d'entrées avec des noms spécifiques via jQuery si leur conteneur Div est configuré pour afficher le bloc.jQuery ne multiplie que les valeurs qui ne sont pas cachées

Quelque chose lien if ($('#product_' + this.alt).css('display','block')) {

Ensuite, il faut ajouter .each avec aller chercher quelque chose comme cela d'entrée.

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

Y a-t-il des idées sur comment je pourrais tout mettre ensemble?

Éditer:

Évidemment je devrais clarifier. Encastré dans la balise alt de plusieurs cases à cocher et boutons radio est un ID qui correspond à l'ID des conteneurs et des champs cachés. Par conséquent, la combinaison de boutons et de cases à cocher contrôlées détermine les zones masquées visibles ici.

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); 

}); 

Ce que je besoin est un champ appelé « GT_grand_total » pour la somme de tous les champs zone '#product_price_total_PRI_' + this.alt).val()' que si leur panneau '#product_' + this.alt est visible.

+0

Je ne sais pas ce que vous essayez de faire ici. Pourquoi utilisez-vous 'this.alt'? Quels sont ces champs? Pourriez-vous montrer votre code HTML? – lonesomeday

+0

Ajouter ou multiplier? Qu'est-ce que c'est dans this.alt? Considérez-vous chanceux que je ne descende pas voter des questions mal formulées :) –

+0

Le this.alt est simplement un moyen de déterminer l'ID des champs requis car ils sont tous générés dynamiquement. A l'intérieur de la balise alt est un identifiant unique qui est également généré avec PHP qui correspond aux balises alt des champs obligatoires en plus. –

Répondre

1

Comme par votre exigence

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); 

Ou pour un total

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

alert(total); 

Exemple de travail

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

+0

Remerciements merveilleux, Final Fidle http://jsfiddle.net/wB5Hh/7/ –

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); 

Définition de: sélecteur caché http://api.jquery.com/hidden-selector/

Questions connexes