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 :

Compter le nombre de inputs ayant un name différent


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 29
    Par défaut Compter le nombre de inputs ayant un name différent
    Bonjour à tous.
    Après avoir passé pas mal de temps à chercher une solution sur les forums, je n'ai pas trouvé une solution à mon problème.
    V'la le topo
    J'ai un formulaire composé de nombreux input de type radio mais qui ont des noms différents et le nombre d'input pour chaque nom n'est pas le meme. Ils ont tous la meme classe "required".
    J'aimerais mettre en place la vérification de tous les input à la fois plutot que de les tester un par un. Seulement voila, quand je mets des codes en place, il me compte le nombre de input total.

    Existe-t-il une fonction qui permettrait de compter le nombre de réponse possible dans la page, c'est à dire le nombre de input en les groupant par nom en quelque sorte.
    Le problème n'est pas facile à expliquer donc un petit exemple s'impose je pense.
    imaginons ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <input type="radio" name="input1" value=1 class="required">1</input>
    <input type="radio" name="input1" value=2 class="required">2</input>
    <input type="radio" name="input1" value=3 class="required">3</input>
    <input type="radio" name="input1" value=4 class="required">4</input>
     
    <input type="radio" name="input2" value=1 class="required">1</input>
    <input type="radio" name="input2" value=2 class="required">2</input>
    <input type="radio" name="input2" value=3 class="required">3</input>
     
    <input type="radio" name="input3" value=1 class="required">1</input>
    <input type="radio" name="input3" value=2 class="required">2</input>
    Le but est de compter le nombre de name différents en fin de compte et voir si l'un des inputs n'a pas été coché.

    J'espere avoir été clair. Merci d'avance pour vos lumières !

  2. #2
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function CountDistinctName()
    {
        var inputs = Array();
        $(".required").each(function(index, item)
        {
            var n = $(item).attr("name");
            if(inputs.indexOf(n) == -1) { inputs.push(n); }
        });
     
        return inputs.length;
    }
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  3. #3
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Ou alors, écrire son propre sélecteur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $.extend($.expr[':'], {
        distinctNames : function(elem, index, params) {
            // Contient le sélecteur passé en paramètre
            selector = params[3];
     
            return (
               // Il faut que l'élément parcouru corresponde au sélecteur
               $(selector).index(elem) != -1
               // Il faut que l'élément parcouru ai un attribut "name"
            && ($(elem).attr('name') != null)
               // Il faut que l'index de l'élément parcouru soit égal à l'index du premier élément ayant le même valeur pour l'attribut name
            && $(selector).index(elem) == $(selector).index($("[name=" + $(elem).attr('name') + "]")));
        }
    });
    A utiliser de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Renvoi le nombre de name différent correspond au sélecteur passé en paramètre.
    $("input:distinctNames(.required)").length
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ou alors mettre un checked par défaut au premier input de chaque groupe, du coup, plus besoin de vérification
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 29
    Par défaut
    Merci bien arnaud, la premiere fonction était nickel. J'ai pas essayé la deuxième parce que je ne la pigeais pas et je n'avais pas le temps de m'y arreter. J'essaierais de capter le truc plus tard.

    Merci encore !!

  6. #6
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Bon, encore une manière de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function CountDistinctNames(selector)
    {
        return $.unique($.map($(selector), function(item) { return $(item).attr("name"); })).length;
    }
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

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

Discussions similaires

  1. Compter le nombre de lignes ayant des critères similaires
    Par JohnJ_M dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 21/11/2014, 10h10
  2. [AC-2007] Compter le nombre de champs ayant une certaine valeur
    Par tomatotep dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 20/06/2012, 11h01
  3. compter le nombre de record
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 12/03/2003, 09h53
  4. [TListView] Compter le nombre de lignes
    Par agh dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/09/2002, 20h25
  5. Compter le nombre ligne listée (COUNT) ?
    Par StouffR dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/09/2002, 09h41

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