2017-08-28 3 views
1

J'ai un formulaire de paiement avec trois sections. Fondamentalement, la première est une liste "radio" avec des multiplicateurs, la seconde est une liste "case à cocher" avec des valeurs définies, et la troisième est une liste déroulante avec des multiplicateurs ==>(jsfiddle). Pour plus de clarté, j'ai inséré une boîte de texte qui afficherait la valeur calculée totale.jquery- calculer une valeur totale après avoir rempli une case à cocher/radio/dropdown formulaire

Lorsque les utilisateurs remplissent ce formulaire, comment puis-je calculer et afficher le total?

J'ai essayé d'utiliser la réponse de dépassement de pile this, mais cela ne fonctionne pas du tout.

$('input').change(function(){ 
    var tot = 1; 
    $.each($('input'),function(){ 
     var curr_val = $(this).val(); 
     if(curr_val != ""){ 
      tot = tot * curr_val; 
      $('#total').val(tot); 
     } 
    }); 
}); 
+0

Que voulez-vous faire, vous voulez multiplier la valeur sélectionnée ou toutes les valeurs ?? –

+0

Toutes les valeurs. Donc, si un utilisateur sélectionne "x2", sélectionne 3 cases (chacune a une valeur de 4), et sélectionne "3 semaines" par exemple, le total affichera 504 (2x3x4x21) – Cris

Répondre

1

Vous pouvez modifier votre sélection à ne comprennent pas le#total que vous ne voulez pas écouter son changement - $(':input').not('#total').change.

Vous pouvez utiliser une fonction jquery pour obtenir la matrice de boîtes cochées.

L'étape suivante serait de multiplier tous - en utilisant #reduce() fonction pour ajouter le tableau.

Voir la démo ci-dessous:

$(':input').not('#total').change(function() { 
 
    var tot = 1; 
 

 
    var s1 = +$('input[name=section1]:checked').val(); 
 
    var s2 = $('input[name=section2]:checked').map(function() { 
 
    return +$(this).val(); 
 
    }).get(); 
 
    var s3 = +$('select').val(); 
 
    $('#total').val(s1 * (s2.reduce(function(p,c){ 
 
    return p + c; 
 
    },0) || 1) * s3); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form method="post" action=""> 
 
    <div id="section1">Section 1 
 
    <br><input type="radio" name="section1" value="2"> x2 
 
    <br><input type="radio" name="section1" value="1.5"> x1.5 
 
    <br><input type="radio" name="section1" value="1.5"> x1.5 
 
    <br><input type="radio" name="section1" value="1.5"> x1.5 
 
    <br><input type="radio" name="section1" value="1"> x1 
 
    <br><input type="radio" name="section1" value="1"> x1 
 
    </div> 
 
    <br> 
 
    <div id="section2">Section 2 
 
    <br><label><input type="checkbox" name="section2" value="4"><span>1</span></label> 
 
    <label><input type="checkbox" name="section2" value="4"><span>2</span></label> 
 
    <label><input type="checkbox" name="section2" value="4"><span>3</span></label> 
 
    <label><input type="checkbox" name="section2" value="4"><span>4</span></label> 
 
    <label><input type="checkbox" name="section2" value="4"><span>5</span></label> 
 
    <label><input type="checkbox" name="section2" value="4"><span>6</span></label> 
 
    <br><label><input type="checkbox" name="section2" value="4"><span>7</span></label> 
 
    <label><input type="checkbox" name="section2" value="4"><span>8</span></label> 
 
    <label><input type="checkbox" name="section2" value="4"><span>9</span></label> 
 
    <label><input type="checkbox" name="section2" value="4"><span>10</span></label> 
 
    <label><input type="checkbox" name="section2" value="4"><span>11</span></label> 
 
    <label><input type="checkbox" name="section2" value="4"><span>12</span></label> 
 
    </div> 
 
    <br> 
 
    <div>Section 3<br> 
 
    <select> 
 
    <option value="7">1 week</option> 
 
    <option value="14">2 weeks</option> 
 
    <option value="21">3 weeks</option> 
 
    <option value="28">4 weeks</option> 
 
    </select> 
 
    </div> 
 
    <input type="text" value="0" id="total"> 
 
</form>

+0

Cela fonctionne mais je viens de réaliser une erreur dans ma question se rapportant à la section 2. Dans la section 2, chaque case à cocher a une valeur de 4, mais en sélectionnant plus de cases à cocher devrait ajouter 4 pas de multiplier. Sélectionner "x2" dans la section 1, cocher une case dans la section 2 et sélectionner "1 semaine" dans la section 3 est égal à 56 (2 x 4 x 7), mais sélectionner deux cases me donne 224 (parce que ça fait 2 x 4 x 4 x7), alors qu'en fait je veux 112 (2 x (4 + 4) x 7); sélectionner 3 cases à cocher devrait me donner 163, en sélectionnant 4 cases à cocher devrait me donner 224, etc, – Cris

+0

ok, voir la réponse éditée maintenant ... – kukkuz

+0

Section 1 ne semble pas fonctionner – Cris