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 :

Utilisation de next()


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut Utilisation de next()
    Bonjour tout le monde,


    J'ai un petit soucis avec l'utilisation de next(), je vous explique:

    Voici mon code HTML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <form action="index.php?page=trade]" method="POST">
     
        Quantité: <input type="text" class="nb_vsx" name="nb_unite" 
                         value="XXX" />
     
        <input type="hidden" name="flt_action_buy" value="XXX" />
        <input type="hidden" class="price_unt" value="XXX"/>				
        <input type="submit" value="Annuler la vente"/>
     
    </form>

    Ce que je voulais faire: quand l'utilisateur termine de rentrer un nombre dans l'input qui a pour class "nb_vsx", on aille chercher la valeur du champs caché qui a pour class "price_unt".

    Sachant que ce bout de code se répète en boucle X fois dans la page.

    J'ai commencé à écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $('.nb_vsx').live("keyup", function(){
     
     
    	//on récupère la valeur du champs (price_unt) qui suit
    	var price = $(this).next(".price_unt").val();
     
            alert(price);
    });
    Le soucis, c'est que l'alert me sort: "Undefinited".

    Je ne sais pas ou ça coince, peut ètre me suis-je trompé sur le fonctionnement de next().

    Quelqu'un aurait une idée pour m'aider ?

    Merci d'avance,


    kasou

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Par défaut
    Il me semble que next() c'est pour l'élément qui suit juste après, quel qu'il soit. Le selecteur sert alors juste à déterminer la nature de cet élément.

    Essaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var price = $(this).nextAll(".price_unt:eq(0)").val();
    Ici on considère toutes les classes ".price_unt" et on traite la première d'entre elles grâce au eq() (enfin en théorie...).

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut
    Salut _concept_ , merci pour ta réponse, mais il me dit toujours que price n'est pas défini

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Par défaut
    Jouer avec next n'est pas très robuste, à la moindre modification de ton HTML, ton Javascript ne fonctionnera plus. Donne plutôt des id à tes éléments...

  5. #5
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    .find() ?
    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 !

  6. #6
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 099
    Par défaut
    Citation Envoyé par _concept_
    var price = $(this).nextAll(".price_unt:eq(0)").val();
    .nextAll() sélectionne tous les nœuds suivants, puis applique le filtre. Ici, :eq(0) correspond au flt_action_buy, ce qui, intersecté avec .price_unt donne un résultat vide.

    Il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var price = $(this).nextAll(".price_unt").val();
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  7. #7
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Citation Envoyé par _concept_ Voir le message
    Il me semble que next() c'est pour l'élément qui suit juste après, quel qu'il soit. Le selecteur sert alors juste à déterminer la nature de cet élément.

    Essaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var price = $(this).nextAll(".price_unt:eq(0)").val();
    Ici on considère toutes les classes ".price_unt" et on traite la première d'entre elles grâce au eq() (enfin en théorie...).
    Même si kasoutami n'a pas réussi à la mettre en oeuvre, la solution et le code donné par _concept_ est tout a fait correct (j'ai testé pour en être certain).

    En l'adaptant à l'insertion d'une division :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var price = $(this).next().children(".price_unt:eq(0)").val();
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var price = $(this).next().children(".price_unt:first").val();
    On sélectionne l'élément suivant (div) puis dans ses fils (children), tous les éléments (nextAll) ayant la classe ".price_unt". Mais on ne retient que le premier d'une éventuelle série.

    La critique et l'explication de Watilin,
    Ici, :eq(0) correspond au flt_action_buy
    , est erronée.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  8. #8
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 099
    Par défaut
    @Dany
    Autant pour moi alors, j’ai dû encore confondre le sélécteur :eq(0) (ou :first comme tu le fais remarquer) avec la méthode .first(). C’est bien :first qui repère la position dans le DOM et .first() dans la collection de nœuds renvoyée, et pas le contraire.

    Mais alors, pourquoi la solution de _concept_ ne marchait pas ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  9. #9
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Tout le monde peut commettre une erreur, moi le premier.

    Mais il est toujours bon et bien de rendre à César ce qui appartient à Jules.

    Avec Firefox et Firebug, si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $(function(){
    	console.log($("div"));
    	console.log($("div").first());
    	console.log($("div:first"));
    });
    Je sélectionne toujours la première division qui, avec Firebug, est div#_firebugConsole

    Mais alors, pourquoi la solution de _concept_ ne marchait pas ?
    Seul kasoutami peut répondre à votre question, mais il toujours possible que le code de sa question et son code réel aient été légèrement différents.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

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

Discussions similaires

  1. Utilisation boucle "Dim Next"
    Par number8one dans le forum Débuter
    Réponses: 3
    Dernier message: 17/11/2011, 16h34
  2. utilisation de for..next
    Par dodie84 dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/05/2008, 10h04
  3. [Struts-Layout] Utilisation des boutons next et previous
    Par elsodiop dans le forum Struts 1
    Réponses: 3
    Dernier message: 13/02/2007, 11h56
  4. Nom de Champ pour utiliser For/Next
    Par Mulele dans le forum Access
    Réponses: 2
    Dernier message: 21/10/2005, 19h57
  5. Nom de Champ dans une table pour utiliser For/Next
    Par Mulele dans le forum Access
    Réponses: 6
    Dernier message: 30/10/2004, 13h28

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