Warunek do wyliczania wartości

0

Mam kilka inputów

<li><input type="text" class="col-md-1" id="fraction" name="fraction[]" value="" size="6" />
<input type="text" class="col-md-1" id="ford" name="ford[]" value="" size="6" /></li>

To sumuje mi wartości z wszystkich inputów #ford i wypisuje wynik do #onetotal, teraz chcę aby sumowało tylko te wartości z #ford gdzie w #fraction jest wpisana wartość 1 i wypisać to do #onetotal, i identycznie zsumować wartości z #ford jeśli w #fraction jest wartość 2 i wypisać do #twototal.

var sumaTotal = function() {
    var suma = 0;
    $('input[id=ford]').each(function(k, els) {
        var value = Number($(els).val());
        if (!isNaN(value)) suma += value;
    })
    $('#onetotal').val(suma);
}

Wartość powinienem móc sprawdzić tak


var fraction = els.find('input[id=fraction]').val();
if(fraction == 1){}

Natomiast nie wiem jak to powinno konkretnie wyglądać?

Całość jest nieco bardziej rozbudowana i wygląda mniej więcej tak https://jsfiddle.net/7z31t1gx/10/

0

Martwe to forum...

1

Można to rozwiązać w ten sposób:

var sumaTotal = function() {
    var suma1 = 0;
    var suma2 = 0;
    $('input[id=ford]').each(function(k, els) {
        var value = Number($(els).val());
        var fraction = Number($('input[id=fraction]')[k].value);               
        if(fraction === 1) {
	        if (!isNaN(value)) suma1 += value; 
        } 
        
        if(fraction === 2) {
        	if (!isNaN(value)) suma2 += value; 
        }
    })
    
    $('#onetotal').val(suma1);
    $('#twototal').val(suma2);
}
0

Napisałem na tym forum 8 postów i pierwszy raz dostałem jakąkolwiek odpowiedź, ba i nawet prawie w 100% działającą tak jak chciałem, super i wielkie dzięki.

Może mi powiesz jeszcze jak mogę zrobić tak aby działało to gdy wypełnię pola w kolejności np. A, B i D na końcu ponieważ teraz pole D musi być wypełnione przed A i B żeby działało.
https://jsfiddle.net/7z31t1gx/12/

1

Jeżeli chcesz po dodaniu kolejno A, B i D jeszcze mieć możliwość zmiany A i B oraz aktualizaję "onetotal" i "twototal" to wystarczy coś takigo:

$('#lines').on('keyup input', 'input', function(event) {
    event.preventDefault();
    calculator($(this).parent('li'));
    if ($(this).attr('name') === 'percent[]') {
    	var val = $(this).val();
        val = val.replace(/,/g, '.');
    	$(this).val(val);
        sumaTotal();
    }
    else if ($(this).attr('name') === 'additional[]') {
    	var val = $(this).val();
        val = val.replace(/,/g, '.');
    	$(this).val(val);
        sumaTotal();
    }
    else if($(this).attr('name') === 'fraction[]') {
        var val = $(this).val();
        val = val.replace(/,/g, '.');
    	$(this).val(val);
        sumaTotal();
    }
});
1

Powyższy kod możesz oczywiście skrócić:

$('#lines').on('keyup input', 'input', function(event) {
    event.preventDefault();
    calculator($(this).parent('li'));
    if ($(this).attr('name') === 'percent[]' || $(this).attr('name') === 'additional[]' || $(this).attr('name') === 'fraction[]') {
    	var val = $(this).val();
        val = val.replace(/,/g, '.');
    	$(this).val(val);
        sumaTotal();
    }
});
0

Dziękuje ślicznie za pomoc, teraz postaram się samemu to rozbudować o kolejne wartości które mam w planach :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1