IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Variation de valeur formulaire en fonction de boutons et cases


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de Saturos2k4
    Homme Profil pro
    Analyse système
    Inscrit en
    Juillet 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2015
    Messages : 37
    Par défaut Variation de valeur formulaire en fonction de boutons et cases
    Bonjour,

    Voici le problème :

    Je travaille actuellement sur un formulaire de paiement en Php/html et javascript, le select item fonctionne et met à jour le prixdans la case grise total,

    J'aimerai rajouter des boutons "qualité" par default égale à 1, donc total x 1, et je voudrai faire varier la valeur de total

    Exemple : qualité standard => total x 1.50

    qualité pro => total x2.00



    voici mon code js du bouton select qui fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $('select[name="item_id"]').on('change', function() {
               var total = parseFloat($('select[name="item_id"] option:selected').attr('data-price')).toFixed(2);
               updateTotal(total);
           });
    code html/php du select :

    Code HTLM : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <select name="item_id" class="form-control" data-rule-required="true">
    											<option value="">-- S&eacute;lectionnez le produit --</option>
    											<?php foreach ( Model::factory('Item')->find_many() as $item ) : ?>
    											<option value="<?php echo $item->id; ?>" data-name="<?php echo $item->name; ?>" data-price="<?php echo $item->price; ?>" <?php echo get('item_id') == $item->id ? 'selected' : ''; ?>><?php echo $item->name; ?> (<?php echo currency($item->price); ?>)</option>
    											<?php endforeach; ?>
    										</select>
    voici le code js des boutons radio qui ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $('input[name="quality"]').on('change', function() {
    			var input = document.getElementById(cb.getAttribute('data-qty'));									 
    			var qty = input.value;
    			var amount = 0;
    			if (qty != '') 
    			{
                amount += total * qty;
                }
                updateTotal(amount);
            });
    code html des boutons :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <input name="quality" type="radio" class="my-activity" value="1.00" data-qty="1.00" checked> 
    Qualité 1er Prix (total x 1)<br />
    <input class="my-activity" type="radio" name="quality" value="1.50" data-qty="1.50"> Qualité Standard (total x 1.5)<br />
    <input class="my-activity" type="radio" name="quality" value="2.00" data-qty="2.00"> Qualité Pro (total x 2)<br />


    Je bloque un peu je dois avouer... Merci d'avance pour votre aide :-)

  2. #2
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    premier truc : les [inputs].value sont de type texte et non de type numérique.
    Chercher à faire des opérations arithmétiques avec du texte, ça ne peut pas marcher.

    Pour les [inputs] en HTML5 il faut utiliser des balises <label> surtout pour les boutons radio et les checkbox, et c'est pas juste une question de "respect des normes" mais c'est parce qu'il y a des mécanismes utiles qui vont avec.

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Eh oui...

    En d'autres termes, change tes valeurs avec Number(valeur), donne un id à chaque bouton, un label qui va bien avec, et sera un formulaire de paiement un peu plus engageant;

  4. #4
    Membre averti Avatar de Saturos2k4
    Homme Profil pro
    Analyse système
    Inscrit en
    Juillet 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2015
    Messages : 37
    Par défaut
    Bonsoir , merci beaucoup pour votre support ;-)

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <label for="quality"><span class="colordanger">*</span>Qualit&eacute; rédactionnelle:
    <input id="quality" name="quality" type="radio" class="my-activity" value="1.00" data-qty="1.00" checked> 
    Qualité 1er Prix (total x 1)<br />
    <input id="quality" class="my-activity" type="radio" name="quality" value="1.50" data-qty="1.50"> Qualité Standard (total x 1.5)<br />
    <input id="quality" class="my-activity" type="radio" name="quality" value="2.00" data-qty="2.00"> Qualité Pro (total x 2)<br />
    </label>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     $('input[id="quality"]').on('change', function() {
    			var input = document.getElementById(cb.getAttribute('data-qty'));									 
    			var qty = Number(value);
    			var amount = 0;
    			if (qty != '') 
    			{
                amount += total * qty;
                }
                updateTotal(amount);
            });
    Voici mes modifications, mais ça n'a pas l'air de fonctionner... j'ai du louper quelque chose :-/

  5. #5
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Number(input.value)

  6. #6
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    C'est un petit peu délirant comme code, alors j'ai au moins 2 questions :

    1 / à quoi ça sert d'avoir deux attributs différents pour indiquer la même chose ?
    comme ici value="1.50" data-qty="1.50"

    2 / Pourquoi utiliser du jQuery pour un truc aussi trivial qui peut s'écrire 100 fois plus simplement en javascript ?

    une remarque:
    visiblement, il s'agit d'un morceau de formulaire, j'aimerai mieux voir cette partie de code entière de ce formulaire en HTML (générée) et pas avec du PHP.
    parce que, par exemple, on ne voit pas ce que peut être l' élément HTML ayant comme critère jQuery $('input[id="quality"]') (qui au passage est vraiment tirré par les cheveux, mais pourquoi pas....)

    Exemple de formulaire quand on lit la documentation => voir le code à jour dans le post à la suite

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/05/2007, 13h21
  2. Réponses: 7
    Dernier message: 23/02/2007, 15h33
  3. Réponses: 4
    Dernier message: 01/08/2006, 16h12
  4. Réponses: 4
    Dernier message: 12/06/2006, 11h46
  5. Comment charger un formulaire en fonction d'un bouton radio
    Par FredKéKé dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 31/01/2006, 13h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo