jQuery умножьте только значения, которые не скрыты
-
24-10-2019 - |
Вопрос
Я размышляю о том, как вы бы добавили все значения входов с определенными именами через jQuery, если их контейнерный Div установлен для отображения блока.
Что -то ссылка if ($('#product_' + this.alt).css('display','block')) {
Тогда это должно сложиться .each
С привлечением ввода что -то подобное.
$('#product_price_total_PRI_' + this.alt).val
Есть идеи о том, как я бы собрал все это вместе?
Редактировать:
Очевидно, я должен уточнить. В ALT Tag из нескольких флажков и радиопроизводительных кнопок - это идентификатор, который соответствует идентификаторам скрытых контейнеров и полей. Поэтому комбинация кнопок и флажок, которые проверяются, определяет, какие скрытые области видны, как видно здесь.
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
видно.
Решение
В соответствии с вашим требованием
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);
Рабочий пример
Другие советы
Если элементы, отображаемые без блока, не видны, вы можете использовать jQuery :visible
селектор
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);
Определение: скрытый селекторhttp://api.jquery.com/hidden-selector/