2013-02-15 2 views
0

Я хочу получить среднее значение по входному значению, и у меня есть 5 полей ввода. Это то, что я нашел, но это не с входами, использующими событие onchange, может ли кто-нибудь помочь мне в этом?Получите среднее значение от входов при изменении

var total = 0, 
    valid_labels = 0, 
    average; 

$('.td_input').each(function() { 
    var val = parseInt(this.innerHTML, 10); 
    if (val !== 0) { 
     valid_labels += 1; 
     total += val; 
    } 
}); 

average = total/valid_labels; 
$('.average').val(average); 

jsfiddle http://jsfiddle.net/Pqd8B/1/

ответ

5

Вы можете использовать keyup событие, как это и проверить, если входные значения числа, прежде чем принимать во внимание

http://jsfiddle.net/Pqd8B/2/

// Catch all inputs key events : recalculate average 
$('.td_input').keyup(function() { 

    // Init variables 
    var total = 0, 
     valid_labels = 0, 
     average; 

    $('.td_input').each(function() { 
     // Retrieve input value 
     // .innerHTML only retrieves the info between the HTML tags, and is 
     // a non-jQuery call. The jQuery version is .html(), but you want 
     // .val() with no parameters, which gets the current input value 
     var val = parseInt($(this).val(), 10); 

     //Test if it is a valid number with built-in isNaN() function 
     if (!isNaN(val)) { 
      valid_labels += 1; 
      total += val; 
     } 
    }); 

    // Calculate the average 
    // Note: This is done inside the keyup handler 
    // When it is outside, it is only calculated once when the page loads 
    $('.average').val(total/valid_labels); 
}); 
+2

Это верно, но вы можете объяснить, почему помочь OP узнать, что он сделал неправильно. –

+0

Я добавил несколько комментариев – sdespont

+0

thnx, и thnx для благодарности! – Hugo

Смежные вопросы