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 :

Accès aux attributs d'un nested field


Sujet :

jQuery

  1. #1
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 16
    Par défaut Accès aux attributs d'un nested field
    Bonjour,
    Etant nouveau en javascript et ne sachant pas quoi chercher exactement, j'espère que vous pourrez m'aider parce que je n'ai pas réussi à trouver ce qui pourrait m'aider jusqu'à maintenant :/ .
    Voilà le problème que je rencontre actuellement :
    J'ai crée un projet sous Ruby on Rails et utilise javascript pour créer/détruire des champs à la volée. Cependant, je n'arrive pas à effectuer de calculs sur les champs . Je pense que c'est surement parce que je n'arrive pas à faire passer les attributs dans la fonction.

    Voici le code de mon HTML.erb :
    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
    16
    17
    18
    19
     
    <div class="fields">
      <p>
      <%= f.label :description, "Decription" %>
      <%= f.text_field :description %> </br>
      <%= f.label :TVA,"TVA" %>
      <%= f.text_field :TVA  %>  </br>
     
      Prix : <input type="text" size="25" name="Prix" id="prix" onselect="calcul(this)">  </br>
      Quantite : <input type="text" size="25" name="Quantite" id="quantite" onselect="calcul(this)">  </br>
      Montant HT: <input type="text" size="25" name="Montant HT" id="montant" onselect="calcul(this)"> </br>
     
      <%= f.label :type,"Type" %>
      <%= f.text_field :type %>  </br>
      <%= f.label :ref_prod_serv, "Reference produit" %>
      <%= f.text_field :ref_prod_serv%>  </br>
      <%= link_to_remove_fields "remove", f %><br />
            </p>
     </div>
    et mon applications :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    function remove_fields(link) {
        $(link).previous("input[type=hidden]").value = "1";
        $(link).up(".fields").hide();
    }
     
    function add_fields(link, association, content) {
        var new_id = new Date().getTime();
        var regexp = new RegExp("new_" + association, "g")
        $(link).up().insert({
            before: content.replace(regexp, new_id)
        });
     
    function calcul(f) {
     
            var qte = f.getElementById('quantite').getValue()  ;
            var prix = f.getElementById('prix').getValue()      ;
     
            if(qte=='')
            qte = 0;
            if(prix == '')
            prix = 0;
     
            f.getElementById('montant').setValue(qte * prix) ;
     
            }
    }
    Il n'y a pas d'erreurs lors de l'exécution mais il ne se passe rien ...
    J'ai bien essayé avec un document.getElementBy... mais rien :/ d'où les fantaisies du code avec le this ...
    Donc voilà si quelqu'un pouvait m'aider ça serait sympa

  2. #2
    Membre expérimenté Avatar de MaitreKaio
    Profil pro
    Freelance Java / Web / Mobile
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance Java / Web / Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut
    Quand tu dis qu'il n'y a pas d'erreur, tu veux dire qu'en regardant la console JS de ton navigateur tu ne vois pas d'erreur ? Si c'est le cas ça m'étonne.
    Sinon, je vois que dans ta fonction calcul tu utilises getElementById() sur ton paramètre f (qui si j'ai bien compris est le champ de saisie à l'origine de l'appel), mais cette méthode est une méthode de document, tu dois donc faire document.getElementById().
    D'autre part, tu accèdes aux valeurs des champs par des appels à getValue(). Je pense que tu dois plutôt utiliser la propriété 'value'.

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    il serait plus intéressant de voir le code html généré, et non pas le code serveur ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 16
    Par défaut
    En supposant que le code HTML généré c'est le code source, voici ce que j'obtiens pour la classes field.
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <div class="fields">
      <p>
     
      <label for="facture_champs_attributes_2_description">Decription</label>
      <input id="facture_champs_attributes_2_description" name="facture[champs_attributes][2][description]" size="30" type="text" /> </br>
      <label for="facture_champs_attributes_2_TVA">TVA</label>
      <input id="facture_champs_attributes_2_TVA" name="facture[champs_attributes][2][TVA]" size="30" type="text" />  </br>
     
      Prix : <input type="text" size="25" name="Prix" id="prix" ">  </br>
      Quantite : <input type="text" size="25" name="Quantite" id="quantite">  </br>
      Montant HT: <input type="text" size="25" name="Montant HT" id="montant" > </br>
        javascript_include_tag :defaults, :cache =&gt; true 
     
      <label for="facture_champs_attributes_2_type">Type</label>
      <input id="facture_champs_attributes_2_type" name="facture[champs_attributes][2][type]" size="30" type="text" />  </br>
      <label for="facture_champs_attributes_2_ref_prod_serv">Reference produit</label>
      <input id="facture_champs_attributes_2_ref_prod_serv" name="facture[champs_attributes][2][ref_prod_serv]" size="30" type="text" />  </br>
     
      <a href="#" onclick="calcul(this); return false;">calcul</a>
      <input id="facture_champs_attributes_2__destroy" name="facture[champs_attributes][2][_destroy]" type="hidden" value="false" /><a href="#" onclick="remove_fields(this); return false;">remove</a><br />
     
            </p>
     </div>
    En fait j'avais déjà essayé avec document.GetElementBy mais ça ne marchait pas non plus :/.
    Et là je me suis mis au jQuery pour voir si ça ne marcherait pas mieux :/
    Si il vous manque des choses n'hésitez pas ça ne fait que 2 semaines que je me suis mis au web donc x)

  5. #5
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 16
    Par défaut
    Bon là avec le jQuery j'arrive à faire un calcul sur un champ mais pour les autres il aime pas :/

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     f.getElementById('montant').setValue(qte * prix) ;
    setValue() ???
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 16
    Par défaut
    J'essayais un peu de tout en fait x)
    Bon sinon voilà le code en jQuery un peu plus propre je pense
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function calcul() {
     
        var qte = $("#quantite").val() ;
        var prix = $("#prix").val()     ;
     
        if(qte=='')
            qte = 0;
        if(prix == '')
            prix = 0;
     
        $("#montant").val(qte*prix);
     
    }
    Doit y'avoir un système d'indices derrière non ?

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    d'indices ?
    tu as plusieurs éléments qui portent le même id ??
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 16
    Par défaut
    Euh oui mais je viens de corriger en fait en ayant vu le code source... (j'avais imposer les id en dur ...)
    Ca devrait mieux marcher maintenant.

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    un id doit etre unique sur la page !!!

    maintenant si tu veux faire une operation sur les elements contenu dans un div de classe donné, jquery te permet d'atteindre les enfants de ce div ...

    par exemple si tes inputs ont tous le même name:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <script type='text/javascript'>
     
     
    $(function(){
     $(".calc").click(function(){
     idx=$(this).val().match(/.$/)
     obj=$("#prod"+idx)
    obj .find("[name='total']").val( obj.find( "[name='prix']").val() * obj.find( "[name='qte']").val()) 
     })
     
    })
     
     
    </script>
    </head>
    <body>
    <div id="prod1">
    prix <input type="text" name="prix" value="1" /><br/>
    qte <input type="text" name="qte" value="1" /><br/>
    total <input type="text" name="total" value="" /><br/>
    </div>
    <hr/>
    <div id="prod2">
    prix <input type="text" name="prix" value="2" /><br/>
    qte <input type="text" name="qte" value="2" /><br/>
    total <input type="text" name="total" value="" /><br/>
    </div>
    <hr/>
    <div id="prod3">
    prix <input type="text" name="prix" value="3" /><br/>
    qte <input type="text" name="qte" value="3" /><br/>
    total <input type="text" name="total" value="" /><br/>
    </div>
    <hr/>
    <br/>
    <input type="button" class="calc" value="go1" /><br/>
    <input type="button" class="calc" value="go2" /><br/>
    <input type="button" class="calc" value="go3" /><br/>
     
     
    </body>
    </html>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 16
    Par défaut
    Hmmm le nom n'est pas fixe, il est suivi d 'un indice comme suit :
    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
     
    <label for="facture_champs_attributes_0_description">Decription</label>
      <input id="facture_champs_attributes_0_description" name="facture[champs_attributes][0][description]" size="30" type="text" /> </br>
      <label for="facture_champs_attributes_0_TVA">TVA</label>
      <input id="facture_champs_attributes_0_TVA" name="facture[champs_attributes][0][TVA]" size="30" type="text" />  </br>
      <label for="facture_champs_attributes_0_prix_unitaire">Prix unitaire</label>
      <input id="facture_champs_attributes_0_prix_unitaire" name="facture[champs_attributes][0][prix_unitaire]" size="30" type="text" />  </br>
      <label for="facture_champs_attributes_0_quantite">Quantite</label>
      <input id="facture_champs_attributes_0_quantite" name="facture[champs_attributes][0][quantite]" size="30" type="text" />  </br>
      <label for="facture_champs_attributes_0_montant_ht">Montant HT</label>
      <input id="facture_champs_attributes_0_montant_ht" name="facture[champs_attributes][0][montant_ht]" size="30" type="text" />  </br>
      <label for="facture_champs_attributes_0_type">Type</label>
      <input id="facture_champs_attributes_0_type" name="facture[champs_attributes][0][type]" size="30" type="text" />  </br>
      <label for="facture_champs_attributes_0_ref_prod_serv">Reference produit</label>
      <input id="facture_champs_attributes_0_ref_prod_serv" name="facture[champs_attributes][0][ref_prod_serv]" size="30" type="text" />  </br>
    Et si je donne un nom fixe il me fait bien le calcul cependant je ne pourrais pas stocker les infos dans ma bdd sans indice. Il faut donc que j'arrive à récupérer l'indice du champ et ce sera bon je pense avec une fonction du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function calcul() {
     
        var qte  = $("#facture_champs_attributes_"+a+"_quantite").val() ;
        var prix = $("#facture_champs_attributes_"+a+"_prix_unitaire").val()     ;
     
        if(qte=='')
            qte = 0;
        if(prix == '')
            prix = 0;
     
        $("#facture_champs_attributes_"+a+"_prix_unitaire").val(qte*prix);
     
    }

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    oulà tu te compliques l'existence là ...
    mais bon si c'est la structure qui t'es imposée ...

    passe le a en paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function calcul(a) {
     
        var qte  = $("#facture_champs_attributes_"+a+"_quantite").val() ;
        var prix = $("#facture_champs_attributes_"+a+"_prix_unitaire").val()     ;
     
        qte=(qte=='')?0:qte;
        prix=(prix == '')?0:prix;
     
        $("#facture_champs_attributes_"+a+"_prix_unitaire").val(qte*prix);
     
    }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 16
    Par défaut
    Hmm le problème c'est que je ne vois pas où et comment le récupérer :/
    Bon sinon truc de barbare mais pas élégant je balance le tout dans une boucle for ... mais c'est vraiment pas top.
    Et imposer le nom en fait je vois comment faire vu que j' instancie de cette manière les champs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <%= f.label :prix_unitaire,"Prix unitaire" %>
      <%= f.text_field :prix_unitaire   %>  </br>
      <%= f.label :quantite,"Quantite" %>
      <%= f.text_field :quantite %>  </br>
      <%= f.label :montant_ht,"Montant HT" %>
      <%= f.text_field :montant_ht   %>  </br>
    et si je met à la place quelque chose du style :
    <%= input type="text" name"prix" =%>
    je perd toutes les infos quand à l' indexation et
    <%= f.text_field :montant_ht , name = "montant" %> il n'aime pas non plus
    Peut-être que la syntaxe n'est pas bonne mais rien trouver pour l'instant.

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    heu a quel moment souhaites tu lancer la fonction ?
    Quand dois tu faire le calcul ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  15. #15
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 16
    Par défaut
    eh bien dans l'absolu j'aimerais faire le calcul pour un champ, mais si je galère trop je lancerais tous les calculs en même temps.
    Le calcul se lance quand l'utilisateur appuies sur un bouton pour l'instant (il se lancera plus tard avec un onKeyup ou autre évent).

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    et le bouton se trouve ou ?
    il y a un bouton pour chaque zone (index) ?
    ou un bouton pour toutes les zones ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  17. #17
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 16
    Par défaut
    Oui il y a un bouton par zone mais j'aimerais à l'avenir que le calcul se fasse par un autre event, pour que celui ci se fasse automatiquement.

  18. #18
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <script type='text/javascript'>
     
     
    $(function(){
     $(".calc").click(function(){
     
     obj=$(this).parent("[id^='prod']")
    obj .find("[name='total']").val( obj.find( "[name='prix']").val() * obj.find( "[name='qte']").val()) 
     })
     
    })
     
     
    </script>
    </head>
    <body>
    <div id="prod1">
    prix <input type="text" name="prix" value="1" /><br/>
    qte <input type="text" name="qte" value="1" /><br/>
    total <input type="text" name="total" value="" /><br/>
    <input type="button" class="calc" value="go1" /><br/>
    </div>
    <hr/>
    <div id="prod2">
    prix <input type="text" name="prix" value="2" /><br/>
    qte <input type="text" name="qte" value="2" /><br/>
    total <input type="text" name="total" value="" /><br/>
    <input type="button" class="calc" value="go2" /><br/>
    </div>
    <hr/>
    <div id="prod3">
    prix <input type="text" name="prix" value="3" /><br/>
    qte <input type="text" name="qte" value="3" /><br/>
    total <input type="text" name="total" value="" /><br/>
    <input type="button" class="calc" value="go3" /><br/>
    </div>
    <hr/>
    <br/>
    </body>
    </html>

    et sur le blur des champs par exemple :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <script type='text/javascript'>
     
     
    $(function(){
     $("[id^='prod'] [name='prix'],[id^='prod'] [name='qte']").blur(function(){
     
     obj=$(this).parent("[id^='prod']")
    obj .find("[name='total']").val( obj.find( "[name='prix']").val() * obj.find( "[name='qte']").val()) 
     })
     
    })
     
     
    </script>
    </head>
    <body>
    <div id="prod1">
    prix <input type="text" name="prix" value="1" /><br/>
    qte <input type="text" name="qte" value="1" /><br/>
    total <input type="text" name="total" value="" /><br/>
    <input type="button" class="calc" value="go1" /><br/>
    </div>
    <hr/>
    <div id="prod2">
    prix <input type="text" name="prix" value="2" /><br/>
    qte <input type="text" name="qte" value="2" /><br/>
    total <input type="text" name="total" value="" /><br/>
    <input type="button" class="calc" value="go2" /><br/>
    </div>
    <hr/>
    <div id="prod3">
    prix <input type="text" name="prix" value="3" /><br/>
    qte <input type="text" name="qte" value="3" /><br/>
    total <input type="text" name="total" value="" /><br/>
    <input type="button" class="calc" value="go3" /><br/>
    </div>
    <hr/>
    <br/>
    </body>
    </html>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  19. #19
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 16
    Par défaut
    En fait je dois arriver à stocker les attributs ans une base de données. De ce fait je dois créer les champs de la sorte :
    <%= f.text_field :prix_unitaire %>
    pour que le champs soit associé à l'attribut.
    Ainsi si je crée le champ avec <input type="text" ... /> celui-ci ne sera pas associé à l'objet.
    Cependant je rencontre un autre problème : quand je crée une page, j'ai bien dans le code source mes 3 objets champs.
    Malheureusement quand j'ajoute un champ avec le code javacript, celui-ci n'apparait pas dans le code source. Du coup je ne peux faire de calculs sur celui-ci en passant par les index. Je me demande même si je peux y accéder tout court ...

  20. #20
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Malheureusement quand j'ajoute un champ avec le code javacript, celui-ci n'apparait pas dans le code source. Du coup je ne peux faire de calculs sur celui-ci en passant par les index. Je me demande même si je peux y accéder tout court ...
    Dans le code source de départ non , mais dans le code source généré oui !
    Par contre poru l'attribution des evenement sur les objets ajoutés dynamiquement regarde du cote le on() live() ou delegate() de jquery ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Erreur lors de l'acces aux attributs
    Par userB dans le forum C++Builder
    Réponses: 1
    Dernier message: 14/09/2006, 12h37
  2. [POO] Acces aux attributs d'un objet depuis une methode evenement :s
    Par NikoGJ dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/07/2006, 19h01
  3. Acces aux attributs d'un bean dans une jsp
    Par mariemor64 dans le forum Struts 1
    Réponses: 2
    Dernier message: 02/06/2006, 10h32
  4. Accès aux attributs d'une balise HTML
    Par tatou42 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/02/2006, 14h01
  5. [DOM] Accès aux attributs d'un noeud
    Par vasilov dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 13/07/2005, 14h19

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