[jQuery-fr] Comment feriez vous?

4 views
Skip to first unread message

Pascal

unread,
Mar 12, 2011, 11:40:20 AM3/12/11
to jQue...@rezo.net
Bonjour

Je dispose d'un formulaire avec 4 champs input.
Ils doivent contenir soit le chiffre 1 soit 2 soit 3 soit 4 mais une
seule fois
Je souhaiterais savoir comment vous feriez pour vérifier qu'un chiffre
est bien ecrit une seule et seule fois?
Merci d'avance

Pascal
_______________________________________________
jQue...@rezo.net - http://listes.rezo.net/mailman/listinfo/jquery-fr

Michel L'HUILLIER

unread,
Mar 12, 2011, 1:26:13 PM3/12/11
to jque...@rezo.net
Bonjour Pascal,

Tu peux déjà te passer du 4ème input.
En effet, vu que tu n'auras plus qu'une possibilité, tu n'auras plus de
"choix".
Donc ce dernier input aura forcément la valeur restante...

Mais le choix des Inputs est-il le plus judicieux ?
Quel usage comptes-tu en faire ?

Michel

Michel L'HUILLIER

unread,
Mar 12, 2011, 3:05:18 PM3/12/11
to jque...@rezo.net
Une version faite "à l'arrache", avec des listes déroulantes...

Le JS :

$(".select").change(function(){
$(this).children("option:selected").addClass("selected");
$(".select").not(this).addClass("autres");
$(".autres
option."+$(this).children("option:selected").val()+"").attr({"disabled":"disabled"});
});

Le HTML :

<select class="select" id="select_1">
<option class="1">1</option>
<option class="2">2</option>
<option class="3">3</option>
<option class="4">4</option>
</select>

<select class="select" id="select_2">
<option class="1">1</option>
<option class="2">2</option>
<option class="3">3</option>
<option class="4">4</option>
</select>

<select class="select" id="select_3">
<option class="1">1</option>
<option class="2">2</option>
<option class="3">3</option>
<option class="4">4</option>
</select>

<select class="select" id="select_4">
<option class="1">1</option>
<option class="2">2</option>
<option class="3">3</option>
<option class="4">4</option>
</select>


Le 12/03/2011 17:40, Pascal a écrit :

Pascal

unread,
Mar 12, 2011, 3:24:27 PM3/12/11
to Michel L'HUILLIER, jQue...@rezo.net
Cela aurait été développé par moi, je ne m'aurais pas coder comme ceci.
Mais bon, je dois faire avec.

Le 12/03/11 21:19, Michel L'HUILLIER a écrit :
> A ceci près que tu laisses la possibilité de rentrer n'importe quelle
> valeur (entre 1 et 4) dans chaque input, et donc 24 cas valables pour
> 256 possibilités au total. Soit environ 9 chances sur 10 d'avoir un
> résultat mauvais.
> Comment le gères-tu, afin que l'utilisateur ne puisse pas avoir une
> erreur ?
>
>
> Le 12/03/2011 21:07, Pascal a écrit :
>> En fait, je ne m'occupe que du js. Il s'agit d'un fichier qui est
>> déjà en fonctionnement et le js permettra de vérifier l'ensemble des
>> données.
>> Finalement, j'ai trouvé.
>> La somme des 4 chiffres donne 10. 1+2+3+4, je vais donc vérifier que
>> les champs soit bien défini et différent de zero et que la somme soit
>> également à 10.
>>
>> c'est donc résolu.
>>
>>
>>
>>
>> Le 12/03/11 19:26, Michel L'HUILLIER a écrit :

Pascal

unread,
Mar 12, 2011, 4:23:36 PM3/12/11
to jque...@rezo.net
Un ami vient de me donner une idée de fonction, la voici:

function checkValues()
{
      // On met toutes les valeurs dans une variable, ça peut donner par exemple '2242' ou '2134', tout dépend de l'utilisateur...
      var sTotalValues = document.forms('nomFormulaire').elements[0].value
                      + document.forms('nomFormulaire').elements[1].value
                      + document.forms('nomFormulaire').elements[2].value
                      + document.forms('nomFormulaire').elements[3].value;

      // On vérifie s'il y a plusieurs fois les chiffres
      for (var i = 1 ; i <= 4 ; i++)
      {
           // Combien de fois il y a 1, puis 2, puis 3, puis 4
           // la fonction
nombreCaractereRepeterChaine() est fictive évidemment, je connais pas de fonction JS qui puisse faire ça...
           if (nombreCaractereRepeterChaine(sTotalValues, i) > 1)
                 return false;
      }

     return true;
}



Cependant, existe-t-il en javascript ou jquery une fonction pour compter le nombre de chiffre répéter dans une chaine de caractère.


Pascal



Le 12/03/11 21:24, Pascal a écrit :

mlh

unread,
Mar 12, 2011, 4:30:53 PM3/12/11
to jque...@rezo.net
Une autre solution est de mettre 1,2,3,et 4 dans un tableau, et tu sors du tableau la valeur utilisée.
Exemple :
a. si tu choisis 1, il te reste 2,3 et 4 dans le tableau.
b. ensuite, si tu choisis 3, il te restera 2 et 4 dans le tableau.
etc.

MAIS : comment l'utilisateur sait-il ce à quoi il a droit ?

Finalement, le choix des 4 (ou même mieux, 3) selects est plus parlant que de l'input "devinette".

Pascal

unread,
Mar 12, 2011, 4:34:35 PM3/12/11
to jque...@rezo.net
Je répète, je ne peux pas modifier le code source html




Le 12/03/11 22:30, mlh a écrit :
_______________________________________________ jQue...@rezo.net - http://listes.rezo.net/mailman/listinfo/jquery-fr

Samy RABIH

unread,
Mar 13, 2011, 5:35:03 AM3/13/11
to Pascal, jque...@rezo.net

Tu peux modifier le code source en vidant le HTML de la page (ou de la zone concernée) via JS et le remplacer via JS J

 

De : Pascal [mailto:pas...@mirandais.fr]
Envoyé : samedi 12 mars 2011 22:35
À : jque...@rezo.net
Objet : Re: [jQuery-fr] Comment feriez vous?

Michel L'HUILLIER

unread,
Mar 13, 2011, 6:24:22 AM3/13/11
to jque...@rezo.net
La gestion du DOM via jQuery est une de ses spécialités.

En modifiant le code HTML à ta convenance de la sorte, et en ajoutant le code de contrôle qui va bien, tu peux t'en sortir facilement.

Et, pour reprendre ta phrase : " Tu ne modifies pas le code source HTML", vu que tu effectues la modification côté client.

Pascal

unread,
Mar 13, 2011, 12:22:12 PM3/13/11
to jque...@rezo.net
Résolu:


Le 13/03/11 11:24, Michel L'HUILLIER a écrit :

Nini

unread,
Mar 13, 2011, 1:29:02 PM3/13/11
to jque...@rezo.net
Bonsoir,

Je ne comprend pas : 
$(".select").not(this).addClass("autres");




mlh

unread,
Mar 13, 2011, 2:53:32 PM3/13/11
to jque...@rezo.net

On ajoute la classe "autres" (addClass("autres")) à tous les éléments ayant la classe "select" ($(".select")), sauf à l'actuel (not(this)).

Herve Thouzard

unread,
Mar 15, 2011, 1:44:12 PM3/15/11
to Michel L'HUILLIER, jque...@rezo.net
Bonsoir,

Est-ce qu'un calcul de la somme des zones ne pourrait pas résoudre (en partie) le problème simplement ?


Le 13 mars 2011 11:24, Michel L'HUILLIER <ml...@free.fr> a écrit :

Pascal

unread,
Mar 15, 2011, 1:46:00 PM3/15/11
to jque...@rezo.net
Le problème est résolu depuis un bon moment.


Le 15/03/11 18:44, Herve Thouzard a écrit :

Herve Thouzard

unread,
Mar 15, 2011, 1:46:57 PM3/15/11
to Pascal, jque...@rezo.net
Désolé

Olivier GENDRIN

unread,
Mar 18, 2011, 4:39:11 AM3/18/11
to jque...@rezo.net

Oui, mais d’une part tu ne nous as pas communiqué ta solution, d’autre part ça n’interdit pas de chercher.

 

@Hervé : non, parce que :

1+2+3+4 = 1+3+3+3 = 1+1+4+4 (=10).

 

De : Pascal [mailto:pas...@mirandais.fr]
Envoyé : mardi 15 mars 2011 18:46


À : jque...@rezo.net
Objet : Re: [jQuery-fr] Comment feriez vous?

 

Le problème est résolu depuis un bon moment.




Le 15/03/11 18:44, Herve Thouzard a écrit :

Michel L'HUILLIER

unread,
Mar 18, 2011, 12:42:23 PM3/18/11
to jque...@rezo.net
=2+2+2+4
_______________________________________________ jQue...@rezo.net - http://listes.rezo.net/mailman/listinfo/jquery-fr

Herve Thouzard

unread,
Mar 18, 2011, 12:45:57 PM3/18/11
to Olivier GENDRIN, jque...@rezo.net
Le 18 mars 2011 09:39, Olivier GENDRIN <o.ge...@novactive.com> a écrit :

Oui, mais d’une part tu ne nous as pas communiqué ta solution, d’autre part ça n’interdit pas de chercher.

 

@Hervé : non, parce que :

1+2+3+4 = 1+3+3+3 = 1+1+4+4 (=10).

Oui mais 1+1+1+1 = 4 => Trop bas et 4+4+4+4 = 16 => Top haut, donc début de piste.
Mais ce n'était qu'une idée.
 

 

De : Pascal [mailto:pas...@mirandais.fr]
Envoyé : mardi 15 mars 2011 18:46
À : jque...@rezo.net
Objet : Re: [jQuery-fr] Comment feriez vous?

 

Le problème est résolu depuis un bon moment.


Le 15/03/11 18:44, Herve Thouzard a écrit :

Bonsoir,

Est-ce qu'un calcul de la somme des zones ne pourrait pas résoudre (en partie) le problème simplement ?

 


Reply all
Reply to author
Forward
0 new messages