Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2011, 11h09   #1
Futur Membre du Club
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 23
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2011
Messages : 23
Points : 17
Points : 17
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 :
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 !
silverockets est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 12h54   #2
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 204
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 204
Points : 6 113
Points : 6 113
Bonjour,

Code :
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
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 13h44   #3
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 204
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 204
Points : 6 113
Points : 6 113
Ou alors, écrire son propre sélecteur :

Code :
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 :
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
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 14h03   #4
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 16h07   #5
Futur Membre du Club
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 23
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2011
Messages : 23
Points : 17
Points : 17
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 !!
silverockets est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 19h16   #6
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 204
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 204
Points : 6 113
Points : 6 113
Bon, encore une manière de faire :

Code :
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
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h21.


 
 
 
 
Partenaires

Hébergement Web