Warunek do wyliczania wartości

Warunek do wyliczania wartości
LU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

Mam kilka inputów

Kopiuj
<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.

Kopiuj
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

Kopiuj

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/

LU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

Martwe to forum...

MS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 38
1

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

Kopiuj
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);
}
LU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
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/

MS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 38
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:

Kopiuj
$('#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();
    }
});
MS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 38
1

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

Kopiuj
$('#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();
    }
});
LU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.