jQuery si moltiplicano solo i valori che non sono nascosti
-
24-10-2019 - |
Domanda
sto riflettendo come si dovrebbe sommare tutti i valori di ingressi con nomi specifici tramite jQuery se il loro contenitore Div è impostato per bloccare display.
collegamento Qualcosa if ($('#product_' + this.alt).css('display','block')) {
Poi si deve aggiungere fino .each
con recupero dell'ingresso qualcosa di simile.
$('#product_price_total_PRI_' + this.alt).val
Tutte le idee su come avrei messo tutto questo insieme?
Modifica:
Ovviamente vorrei chiarire. Racchiuso nel tag alt di più caselle di controllo e pulsanti di opzione è un ID che corrisponde alle ID di contenitori nascosti e campi. Quindi la combinazione di pulsanti e caselle che sono controllati determina quali aree nascoste sono visibili come visto qui.
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);
});
Quello che ho bisogno è un campo chiamato 'GT_grand_total' come la somma di tutti i campi che zona '#product_price_total_PRI_' + this.alt).val()'
solo se la loro '#product_' + this.alt
pannello è visibile.
Soluzione
secondo il vostro requisito
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);
O per totale
var total = eval(arr.join('+'));
alert(total);
esempio di lavoro
Altri suggerimenti
Se il blocco non visualizzate le voci non sono visibili, è possibile utilizzare il jquery :visible
di selezione
if ($('#product_' + this.alt).is(":visible")) {...}
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);
Definizione: Selettore nascosto http://api.jquery.com/hidden-selector/