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

JavaScript Discussion :

Calcul avec Checkbox


Sujet :

JavaScript

  1. #1
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut Calcul avec Checkbox
    Bonjour,

    J'ai un tableau créé dynamiquement suite à une requète SQL.
    Sur chaque ligne du tableau j'ai une checkbox dont la valeur correspond à un identifiant et un champs caché dont la valeur est variable (elle correspond à un montant en €).
    Je voudrais que lorsque l'utilisateur click sur une ou plusieurs "checkbox", que le ou les montants des champs cachés correspondants s'additionnent et qu'un champs "total" se remplisse automatiquement avec la valeur obtenue.

    Une partie de mon form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <input name="MTtotal" type="text" id="MTtotal" size="6" maxlength="8" value=""/>
     
    <input name="montant[]" type="hidden" value="<?php echo $montant ; ?>"  />
    <input name="idcoutmi[]" id="idcoutmi_<?php echo $row_RsCout['ID_COUTMI']; ?>" type="checkbox" value="<?php echo $row_RsCout['ID_COUTMI']; ?>" onclick="return calculmission();" />
    Ce que j'ai essayé de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function calculmission() {
    for (i=0;i<document.getElementsByName("idcoutmi[]").length;i++){
    	if(document.idcoutmi[i].checked){
    				document.MTtotal.value = ((document.MTtotal.value*1) + (document.montant[i].value*1)) ;
    	}
    }
    }
    Et bien entendu cela ne fonctionne pas ... sinon je ne serai pas là.

    Message d'erreur : Ligne 126 - Objet attendu
    Qui correspond à ceci :
    <input name="idcoutmi[]" id="idcoutmi_3" type="checkbox" value="3" onclick="return calculmission();">
    Merci de vos conseils

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    déjà un problème de syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms['name_du_form'].elements['MTtotal'].value
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('MTtotal').value
    (uniquement parce qu'ici name=id)

    Et puis elle "return" quoi, calculmission() ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="return calculmission();"


    A+

  3. #3
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    calculmission() est la fonction JS que j'ai essayé de faire ...

  4. #4
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    document.forms['name_du_form'].elements["idcoutmi[]" ][i].value

  5. #5
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    J'ai modifié comme ceci, mais toujours même message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function calculmission() {
    for (i=0;i<document.getElementsByName("idcoutmi[]").length;i++){
    	if(document.forms['form'].elements["idcoutmi[]"][i].checked){
    				document.getElementById('MTtotal').value = ((document.getElementById('MTtotal').value*1) + (document.forms['form'].elements["montant[]"][i].value *1)) ;
    	}
    }
    }

  6. #6
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    envoye le code source de ta page, il doit avoir une autre erreur!

    getElementsByName deprecated peut etre...

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Matthieu2000 Voir le message
    getElementsByName deprecated peut etre...
    Non non !

    Par contre ton form a bien un name="form" ?
    Un autre name ("le_form") permettrait d'éviter les confuses

    A+

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (i=0;i<document.getElementsByName("idcoutmi").length;i++){


    A+

  9. #9
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Non plus ...

  10. #10
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Bon je n'ai plus de message d'erreur mais le champs qui devrait se remplir automatiquement reste vide.

  11. #11
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bon ben là on sait plus du tout ou tu en es

    Il faudrait le code actuel, JS + tout le HTML concerné (pas de <form> pour l'instant) ...

    A+

  12. #12
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Je reviens, mon code fonctionne maintenant. je n'ai pas fait de modification de code JS, mais j'avais un include dans ma page et celuic-i contenait un formulaire avec le même nom "form".
    J'ai modfifié ce dernier.
    Mon code JS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function calculmission() {
    for (i=0;i<document.getElementsByName("idcoutmi[]").length;i++){
    	if(document.forms['form'].elements["idcoutmi[]"][i].checked){
    				document.getElementById('MTtotal').value = ((document.getElementById('MTtotal').value*1) + (document.forms['form'].elements["montant[]"][i].value *1)) ;
    	}
    }
    }
    Mon champ prend bien une nouvelle valeur lorsque l'on clique sur les checkbox, le ptit hic c'est que si l'on décoche et qu l'on recoche une checkbox le montant est erroné.
    je pense qu'il va falloir que je trouve une autre façon de calculer.

  13. #13
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    En remettant mon champs à zéro à chaque calcul çà fonctionne, si çà peut intéresser quelqu'un et merci à ceux qui m'ont donné un coup de main.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    function calculmission() {
    document.getElementById('MTtotal').value = 0 ;
     
    for (i=0;i<document.getElementsByName("idcoutmi[]").length;i++)
    {
    	if(document.forms['form'].elements["idcoutmi[]"][i].checked)
    	{
    		MontantTotal = ((document.getElementById('MTtotal').value*1) + (document.forms['form'].elements["montant[]"][i].value *1)) ;
    		Totalcheck = Math.round(MontantTotal*100)/100; 
    		MTtotal = Totalcheck.toFixed(2);
    		document.getElementById('MTtotal').value = MTtotal ;
    	}
    }
    }

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

Discussions similaires

  1. [JTree] Feuille avec CheckBox
    Par redtux dans le forum Composants
    Réponses: 4
    Dernier message: 27/10/2005, 20h11
  2. Mise en archive avec checkbox
    Par flo456 dans le forum ASP
    Réponses: 21
    Dernier message: 19/10/2005, 13h41
  3. [C#]Datagrid avec checkboxs et pagination
    Par kenzo080 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 19/07/2005, 07h10
  4. [C#] TreeView avec CheckBox "indeterminate"
    Par padumeur dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/01/2005, 20h53
  5. Réponses: 2
    Dernier message: 22/03/2004, 10h50

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