2011-06-05 12 views
0

J'ai une fonction qui doit résumer à partir de chaque entrée mais en même temps chaque entrée doit montrer le pourcentage. J'ai trouvé le moyen d'additionner la valeur mais j'ai un problème pour montrer le pourcentage. Voici le code HTML:jquery - calculer le pourcentage pour chaque valeur

Price 1: <input type="text" name="price01" class="price" /> 
Percentage 1: <span class='p'></span> 
<br/> 
Price 2: <input type="text" name="price02" class="price" /> 
Percentage 2: <span class='p'></span> 
<br/> 
Price 3: <input type="text" name="price03" class="price" /> 
Percentage 3: <span class='p'></span> 
<br/> 
Price 4: <input type="text" name="price04" class="price" /> 
Percentage 4: <span class='p'></span> 
<br/> 
Total: <span class="total"></span> 

Le code jquery j'ai trouvé dans Internet:

$.fn.sumValues = function() { 
    var sum = 0; 
    this.each(function() { 
     if ($(this).is(':input')) { 
      var val = $(this).val(); 
     } else { 
      var val = $(this).text(); 
     } 
     sum += parseFloat(('0' + val).replace(/[^0-9-\.]/g, ''), 10); 
    }); 
    return sum; 
}; 

$(document).ready(function() { 
    $('input.price').bind('keyup', function() { 
     $('span.total').html($('input.price').sumValues()); 
    }); 
}); 

espoir quelqu'un peut aider ... Merci.


Merci, les gars. Je pense que j'ai résolu le problème. Ce n'est peut-être pas la meilleure solution, mais j'ai l'idée et ça fonctionne. Merci encore :)

Le code solution: http://jsfiddle.net/amaleen123/6jnKf/2/

Répondre

0

Je ne sais pas le sytax de javascript donc ma réponse pourrait ne pas être trop utile, mais tout ce que vous avez besoin de faire est une fois que vous calculez le total/somme , faites chaque valeur divisée par le total qui vous donnera le pourcentage et mettez cette valeur dans l'intervalle approprié.

Espérons que cela vous aide même sans code réel.

+0

Merci beaucoup, Corey. J'ai l'idée. Merci beaucoup :) – lina83

0

Cela fonctionne

$(document).ready(function() { 

    var $prices = $('input.price'); 

    $prices.bind('keyup', function() { 
     var sum = $prices.sumValues(); 
     $('span.total').html(sum); 

     $('.p').each(function(i,e){ 
      $(e).text($prices.eq(i).val()/sum); 
     }); 
    }); 
}); 

Fondamentalement, chaque Thime un événement keyup est déclenchée et après sumValues est appelé, vous devez parcourir à nouveau ces éléments pour calculer les pourcentages respectifs.

Ce n'est en aucun cas la solution la plus efficace, mais elle fait le travail tout en l'améliorant.

+0

Je vois. Maintenant, je comprends. Merci, Jim :) – lina83

Questions connexes