Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/08/2008, à 19:42

herberts

[JAVASCRIPT] formulaire, expressions régulières, remplacement

Message posté initialement par Astier. Message qui été en double à cause d'un bug du forum, et ça a supprimé les deux quand j'ai voulu supprimer le doublon. Donc voila. Désolé hmm

(mais il n'y avait pas encore de réponse hein)

Bonjour,

Alors je poursuis mon initiation à javascript et rencontre un petit problème (un de plus...).

Donc, par exemple dans le formulaire suivant :

<html>
<body>
<form id="enquete" name="enquete" action="#" method="get">
Nom : <input name="nom" type="text" onblur="upperall ()">
Prénom : <input name="prenom" type="text" onblur="upperfirst (this)">
Ville : <input name="ville" type="text" onblur="upperfirst (this)">
<input type="submit" name="valid" value="Valider">
</form>
</body>
</html>

je souhaiterai que lorsque l'on quitte la "case" de saisie, le texte soit modifié si la casse (majuscule/minuscule) est mauvaise.

Ainsi, pour le nom entièrement en capitale, j'ai fait cela :


function upperall ()
{
  var n = document.enquete.name.value;
   if (n != /[-A-Z]/)
    {
      n = n.toUpperCase ();
    }
}

mais je ne parviens pas à remplacer le texte saisi par la sortie de cette fonction. J'ai essayé cela


n.innerHTML = n.toUpperCase ()

mais j'ai une erreur : "n is undefined" hmm

Une idée ?

Sinon, pour le prénom et pour la ville je souhaiterai vérifier que la première lettre ainsi que la première lettre après un espace ou un tiret soit bien en majuscule.
Pour la première du texte saisi, cela semble assez aisé :

function upperfirst (obj)
{
  if (obj.charAt(0) != /[A-Z]/)
    {
      obj.charAt(0).toUpperCase();
    }
}

je me demande comment faire pour la première lettre suivant un tiret ou un espace. Une idée là encore ?

Merci beaucoup, à bientôt.

Hors ligne

#2 Le 21/08/2008, à 20:38

Keldath

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Ah, je n'avais pas vu que t'avais reposté son topic !

Pour ton problème de "n is not defined", tu as juste fait une erreur dans ta récupération de valeur :

var n = document.forms.enquete.nom.value;

Sans oublier le var ! Je rajoute aussi le forms, je me dis qu'on voit mieux où est-ce qu'on récupère nos valeurs dans le DOM. Pour le test qui suivait, maintenant tu sais faire smile

Pour ton autre soucis de changement en majuscule, là je sèche en Javascript... pour tester un nom composé séparé par des espaces ou tirets j'ai bien ça :

if( !/^[A-Z]{1}[a-z]*([ -][A-Z]{1}[a-z]*)*$/.test(prmText.value) )
{
......
}

mais ensuite...

Hors ligne

#3 Le 21/08/2008, à 22:05

Astier

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Merci herberts:) J'avais tenté de supprimer les doublons mais je n'obtenais qu'un timeout hmm Mais tout est rentré dans l'ordre, félicitations à l'équipe.

Alors merci encore Keldath pour avoir débusqué l'erreur, j'avais plus vraiment les yeux en face des trous à force de chercher hmm

Cependant, je ne parviens toujours par à faire en sorte de remplacer la saisie par le résultat dans le formulaire directement hmm J'ai essayé de faire ça :

function upperall ()
{
  var n = document.forms.enquete.nom.value;
  if (n != /[-A-Z]/)
    {
      n.innerHTML = +n.toUpperCase();
    }
}

mais ça ne marche pas hmm


Pour la second point, je pense qu'il faut récupérer la position du tiret ou de l'espace avec indexOf puis d'incrémenter ce nombre d'un avant de lancer le changement. Voilà ce que j'ai fait pour l'instant :

function upperfirst (obj)
{
  var first = obj.charAt(0);

  if (!/[A-Z]/.test(first))
    {
      first = first.toUpperCase();
    }

  var sep = obj.indexOf(" ") || obj.indexOf("-");
  var next = +sep +1;
  var sec = obj.charAt(next);
  if (!/[A-Z]/.test(sec))
    {
      sec = sec.toUpperCase();
    }
}

mais j'ai droit avec FireBug à un joli :

obj.charAt is not a function
var first = obj.charAt(0);

et je comprends pas trop à vrai dire hmm Ca doit venir de l'utilisation de obj mais j'ai essayé de triturer tout ça mais rien de bon n'en est sorti.


Sinon dans le code, la ligne

var sep = obj.indexOf(" ") || obj.indexOf("-");

pourrait-elle s'écrire

var sep = obj.indexOf(" "||"-");

Merci encore et à bientôt.

Hors ligne

#4 Le 21/08/2008, à 22:26

Totor

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Pour ton premier point :

function upperall ()
{
  var n = document.forms.enquete.nom.value;
  if (!= /[-A-Z]/.test(n))
    {
      document.forms.enquete.nom.value = n.toUpperCase();
    }
}

Pour le second :
Aide-toi de exec

Dernière modification par Totor (Le 21/08/2008, à 22:31)


-- Lucid Lynx --

Hors ligne

#5 Le 21/08/2008, à 23:08

Astier

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

En effet, cela marche hmm Cependant il faut enlever le = après le !
J'avais oublié de mettre à jour le code avec ce que Keldath a proposé dans un post précédent...
/me s'incline moultes fois pour s'excuser auprès de Keldath smile

Par contre, je vois mal comment utiliser exec dans ce cas-là ? Parce que une fois récupérée le morceau de chaîne (soit " l" soit "-l" avec l=lettre), il me faut traiter la lettre et recomposer l'intégralité de la chaîne pour remplacer la value existante par la nouvelle... Je sais pas si je suis très clair hmm

Tout d'abord, est-ce que l'appel par onblur="upperfirst (this)" dans mon code html est "intelligent" ? Ensuite, ma fonction est-elle correctement appelée avec le paramètre "obj" ? Et comment se servir de obj par la suite dans la fonction ?

Merci pour vos éclaircissements, à bientôt.

Hors ligne

#6 Le 21/08/2008, à 23:08

Keldath

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Bien vu Totor, je n'y pensais plus :

function upperfirst (obj)
{
    myRegExp = new RegExp("(^[a-zA-Z]{1})([a-zA-Z]+)(([\ \-])([a-zA-Z]{1})([a-zA-Z]*))?$","");
    if(myRegExp.exec(obj.value)!= null) {
      var result = RegExp.$1.toUpperCase()+RegExp.$2.toLowerCase()+RegExp.$4+RegExp.$5.toUpperCase()+RegExp.$6.toLowerCase();
      obj.value=result;
    }
}

On crée un objet de classe RegExp, et si tu regardes bien on fixe des parenthèses autour de certains morceaux de cette manière :
(première lettre)(reste des lettres)(espace ou tiret)(premiere lettre du second mot)(reste des lettres du second mot)

J'ai rajouté des parenthèse autour de (espace ou tiret)(premiere lettre du second mot)(reste des lettres du second mot) suivit d'un ? pour rendre cette partie non-obligatoire (pour qu'un prénom comme Jean puisse être accepté par la RegExp).

Si l'execution de la RegExp sur ta chaîne ne réussie pas, elle renverra null, sinon, on peut récupérer les différents éléments capturés grâce aux parenthèses (ils sont numérotés dans l'ordre).
Note : on saute le numéro 3 car il correspond aux parenthèses mises autour de la partie non-obligatoire qui ici ne nous sert pas.
On concatène le tout etc etc, et hop, la magie des RegExp smile

Dernière modification par Keldath (Le 21/08/2008, à 23:10)

Hors ligne

#7 Le 21/08/2008, à 23:33

Astier

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Merci encore pour ces explications, c'est bien plus clair et bien plus propre que ce que j'envisageais smile

Par contre pour les noms de ville, deux "mots" c'est un peu court, il suffit de dupliquer un morceau de code pour y parvenir et éventuellement rajouter une portion pour repérer les "du", "des"... et ne pas modifier la casse. J'essaierai ça demain avec les idées un peu mieux en place.

Retour sur le code permettant de transformer Nom/nom en NOM :

function upperall ()
{
  var n = document.forms.enquete.nom.value;
  if (!/[-A-Z]/.test(n))
    {
      document.forms.enquete.nom.value = n.toUpperCase();
    }
}

Si la saisie se fait avec une majuscule initiale, le code n'est pas effectif. Il suffisait de rajouter le "drapeau" g : if (!/[-A-Z]g/.test(n))
Pourquoi donc ? même s'il s'arrête à la première lettre non majuscule trouvée, ce devrait être suffisant non ?

Merci, à bientôt.

Hors ligne

#8 Le 21/08/2008, à 23:40

Astier

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Et que veut dire cette partie (la dernière) dans la RegExp : $",""   ?

Merci, à bientôt.

Hors ligne

#9 Le 21/08/2008, à 23:48

Keldath

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Si la saisie se fait avec une majuscule initiale, le code n'est pas effectif. Il suffisait de rajouter le "drapeau" g : if (!/[-A-Z]g/.test(n))
Pourquoi donc ? même s'il s'arrête à la première lettre non majuscule trouvée, ce devrait être suffisant non ?

Hum, tu as une erreur avec le flag g. Je vois ce que tu as voulu faire, mais si if (!/[-A-Z]g/.test(n)) fonctionne, c'est tout simplement parce qu'il n'a pas trouvé de lettre g comme second caractère smile (tape "Ng" pour vérifier, il ne te fera rien ce coup-ci).

En fait /[-A-Z]/ ne prend en compte qu'un seul caractère. Si tu veux que la regexp s'applique à tous tes caractères, il faut rajouter un + (qui signifie un ou plusieurs) après ta classe de caractères, comme ceci : if (!/[-A-Z]+/.test(n))

PS : tu peux me dire pourquoi tu mets [-A-Z] au lieu de [A-Z] s'il te plaît ? Ça signifie quoi en expression régulière ? (si tu pouvais m'apprendre un truc ce coup-ci, ça serait sympa big_smile)

EDIT :

Et que veut dire cette partie (la dernière) dans la RegExp : $",""   ?

Le symbole $ indique la fin de la chaîne (on n'en a pas forcément besoin), tout comme le symbole ^ qui indique le début de la chaîne : /bla$/ ne prendra en compte que les chaînes qui se termine par "bla".
Le second paramètre envoyé après la virgule c'est tout simplement pour y mettre des options ("drapeaux" comme tu disais), comme "i" pour ignorer la casse, "g" pour ne pas s'arrêter à la première occurence, etc...

Sinon juste comme ça (si tu te demandes) :
myRegExp = new RegExp("blablabla","");
myRegExp.test("Chaîne de blablabla");

est identique à :
/blablabla/.test("Chaîne de blablabla");
Ce sont les mêmes objets, tout comme
var str = "bla";
str.length;

et "bla".length.

Seulement la première méthode (pour les RegExp) permet de spécifier des options en second paramètre.

Dernière modification par Keldath (Le 22/08/2008, à 00:03)

Hors ligne

#10 Le 22/08/2008, à 09:06

Totor

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Astier a écrit :

En effet, cela marche hmm Cependant il faut enlever le = après le !
J'avais oublié de mettre à jour le code avec ce que Keldath a proposé dans un post précédent...
/me s'incline moultes fois pour s'excuser auprès de Keldath smile
Merci pour vos éclaircissements, à bientôt.

un oubli de ma part, désolé... big_smile


-- Lucid Lynx --

Hors ligne

#11 Le 22/08/2008, à 09:31

Totor

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Huuummm, je reviens sur le 2nd point.
Il y a peut-être plus simple avec les fonctions match et replace d'un objet String.
Le tout dans une boucle pour traiter plusieurs occurence d'espace ou tirets...

Dans le principe :

while (valeur.match(/[\ \-][a-z]/))
{valeur=valeur.replace("([\ \-][a-z]{1})"),$1.toUpperCase());}

Dernière modification par Totor (Le 22/08/2008, à 09:41)


-- Lucid Lynx --

Hors ligne

#12 Le 22/08/2008, à 10:03

Astier

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Keldath a écrit :

Si la saisie se fait avec une majuscule initiale, le code n'est pas effectif. Il suffisait de rajouter le "drapeau" g : if (!/[-A-Z]g/.test(n))
Pourquoi donc ? même s'il s'arrête à la première lettre non majuscule trouvée, ce devrait être suffisant non ?

Hum, tu as une erreur avec le flag g. Je vois ce que tu as voulu faire, mais si if (!/[-A-Z]g/.test(n)) fonctionne, c'est tout simplement parce qu'il n'a pas trouvé de lettre g comme second caractère smile (tape "Ng" pour vérifier, il ne te fera rien ce coup-ci).

En fait /[-A-Z]/ ne prend en compte qu'un seul caractère. Si tu veux que la regexp s'applique à tous tes caractères, il faut rajouter un + (qui signifie un ou plusieurs) après ta classe de caractères, comme ceci : if (!/[-A-Z]+/.test(n))

Alors, en fait, si je mets if (!/[-A-Z]+/.test(n)), la saisie n'est pas mise en majuscule si la première lettre saisie est une majuscule... Je ne comprends pas trop du coup.
Par contre, si je fais

if (/[a-z]+/.test(n))

pas de problème smile

PS : tu peux me dire pourquoi tu mets [-A-Z] au lieu de [A-Z] s'il te plaît ? Ça signifie quoi en expression régulière ? (si tu pouvais m'apprendre un truc ce coup-ci, ça serait sympa big_smile)

Je pensais ainsi inclure le tiret que l'on peut trouver dans des noms. Mais c'est peut-être plutôt [- a-z] ? De plus, ta question m'a permis de m'interroger sur la nécessité d'inclure le tiret : on  n'en a pas besoin dans la mesure où on n'a pas besoin de le passer en majuscule.

Et merci encore pour toutes tes explications, ça éclaircit bien des points que je n'avais pas forcément (bien) saisis à la lecture du bouquin sur lequel je me base.

A+

Dernière modification par Astier (Le 22/08/2008, à 10:08)

Hors ligne

#13 Le 22/08/2008, à 10:35

Astier

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Totor a écrit :

Huuummm, je reviens sur le 2nd point.
Il y a peut-être plus simple avec les fonctions match et replace d'un objet String.
Le tout dans une boucle pour traiter plusieurs occurence d'espace ou tirets...

Dans le principe :

while (valeur.match(/[\ \-][a-z]/))
{valeur=valeur.replace("([\ \-][a-z]{1})"),$1.toUpperCase());}

Le problème ici c'est qu'il va d'abord chercher un espace ou un tiret, donc ça pose problème pour la première lettre saisie nan ? Il faut donc travailler en deux temps : la première lettre saisie puis le reste des premières lettres ?


Sinon, j'ai encore beaucoup de mal à créer la fonction upperfirst qui doit s'appliquer au champ prénom et au champ ville. Il est toujours possible de créer deux fonctions pour chacun des champs avec une même action mais il doit bien être possible de n'en faire qu'une nan ?

Merci encore, à bientôt.

Hors ligne

#14 Le 22/08/2008, à 10:52

Totor

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Pour la toute première lettre saisie, il faut effectivement le faire dans un premier/second temps :

valeur=valeur.replace("(^[a-z]{1})"),$1.toUpperCase());
while (valeur.match(/[\ \-][a-z]/))
{valeur=valeur.replace("([\ \-][a-z]{1})"),$1.toUpperCase());}

Pour le reste de ton interrogation, je comprend pas trop ce que tu demandes.


-- Lucid Lynx --

Hors ligne

#15 Le 22/08/2008, à 11:10

Astier

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

En gros, cette fonction doit s'appliquer sur deux éléments, les input prenom et ville.
Mais finalement je suis passé par ça :

function upperfirst ()
{
  var val = document.forms.enquete.prenom.value || document.forms.enquete.ville.value;
  val=val.replace(("(^[a-z]{1})"),$1.toUpperCase());
  while (val.match(/[\ \-][a-z]/))
  {val=valeur.replace(("([\ \-][a-z]{1})"),$1.toUpperCase());}
}

Mais j'ai une erreur : $1 is not defined hmm

Hors ligne

#16 Le 22/08/2008, à 11:18

Totor

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Astier a écrit :

En gros, cette fonction doit s'appliquer sur deux éléments, les input prenom et ville.
Mais finalement je suis passé par ça :

function upperfirst ()
{
  var val = document.forms.enquete.prenom.value || document.forms.enquete.ville.value;
  val=val.replace(("(^[a-z]{1})"),$1.toUpperCase());
  while (val.match(/[\ \-][a-z]/))
  {val=valeur.replace(("([\ \-][a-z]{1})"),$1.toUpperCase());}
}

Mais j'ai une erreur : $1 is not defined hmm

function upperfirst (champ)
{
  var val = champ.value;
  val=val.replace(("(^[a-z]{1})"),"$1".toUpperCase());
  while (val.match(/[\ \-][a-z]/))
  val=valeur.replace(("([\ \-][a-z]{1})"),"$1".toUpperCase());
  champ.value=val;

}

je pense que c'est mieux comme ça wink

et dans ta fonction de vérification générale, tu fais appelle à upperfirst en y passant comme paramètre l'objet nom  puis ensuite l'objet ville du formulaire !

Note : je ne suis pas certain de la syntaxe function upperfirst (champ)

Dernière modification par Totor (Le 22/08/2008, à 11:41)


-- Lucid Lynx --

Hors ligne

#17 Le 22/08/2008, à 11:45

Astier

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

L'instruction while (val.match(/[\ \-][a-z]/)) pose problème (boucle sans fin hmm )

Hors ligne

#18 Le 22/08/2008, à 13:20

Totor

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Bon, j'ai pris mon courage à 2 mains pour tester.
Ceci fonctionne, je le garantie wink

function upperfirst (champ)
{
  var val=champ.value;
  var subVal;
  var regFirst= new RegExp("^[a-z]");
  var reg=new RegExp("[ -][a-z]{1}");

  if (val.match(regFirst))
  {
      subVal=new String(regFirst.exec(val)).toUpperCase();
      val=val.replace(regFirst,subVal);
  }


  while (val.match(reg))
  {
      subVal=new String(reg.exec(val)).toUpperCase();
     val=val.replace(reg,subVal);
  }

  champ.value=val;
}

Dernière modification par Totor (Le 22/08/2008, à 13:21)


-- Lucid Lynx --

Hors ligne

#19 Le 22/08/2008, à 14:01

Astier

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

J'ai adapté ton code pour faire en sorte de mettre en minuscule le reste de la chaîne (sauf les initiales) au cas où elle serait saisie en majuscule ; voilà ce que ça donne :

function upperfirst (champ)
{
  var val = champ.value;
  var first = val.charAt(0);
  var suite = val.substr(1);
  var reg = new RegExp("[ -][a-z]{1}");
  var subval;

  if (/[a-z]/.test(first))
    {
      first = first.toUpperCase();
      suite = suite.toLowerCase();
      val = first + suite;
      champ.value = val;
    }

  while (val.match(reg))
    {
      subval = new String(reg.exec(val)).toUpperCase();
      val = val.replace(reg,subval);
      champ.value = val;
    }
}

Mais là, du coup, comment ferait-on pour exclure les "de" "du"... que l'on peut trouver dans les noms de village du genre Saint Machin de Truc ? J'ai essayé d'ajouter cela dans la fonction mais cela plante :

var regm = new RegExp("/[ ]([de]|[du]|[des])/i");

  while (val.match(regm))
    {
      subval = new String(regm.exec(val)).toLowerCase();
      val = val.replace(regm,subval);
      champ.value = val;
    }

J'en déduis donc que c'est pas bon :'-(

J'en demande beaucoup sans doute, mais j'essaye de faire un peu tout (et n'importe quoi sans doute) sans objectif (apprentissage d'été pour le seul plaisir...)

A+

Hors ligne

#20 Le 22/08/2008, à 14:30

Totor

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Le motif à rechercher est plutôt du style :
<espace>(de ou du ou des ou ...)<espace>

l'expression régulière est donc :
" (de|du|des) " tout simplement !

Cependant, puisque que tu as tout mis en minuscule puis les 1ère lettre en majuscule, cela devient :
" (De|Du|Des) "

C'est très important car il ne faut pas que tu précises l'option "i" (pour ignorer la case), sinon, il te trouvera toujours la 1ère occurence, et donc bouclera sans fin !

On obtient donc :

var regm = new RegExp(" (De|Du|Des) ","");

  while (val.match(regm))
    {
      subval = new String(regm.exec(val)).toLowerCase();
      val = val.replace(regm,subval);
      champ.value = val;
    }

Note : pour tester tes regex : http://www.toutjavascript.com/service/regexp.php


-- Lucid Lynx --

Hors ligne

#21 Le 22/08/2008, à 16:23

Astier

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Alors, petit problème : voilà ce que j'obtiens : Saint Machin du ,duTruc

J'ai regardé du côté de l'outil de génération mais je vois mal à quoi peut-être due la "répétition".

Merci encore.

Hors ligne

#22 Le 22/08/2008, à 16:37

Totor

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Mouais étrange roll
J'ai eu le sentiment qu'il retourne un tableau donc j'ai essayé ceci et ça fonctionne :

var regm = new RegExp(" (De|Du|Des) ","");

  while (val.match(regm))
    {
      subval = new String(regm.exec(val)[0]).toLowerCase();
      val = val.replace(regm,subval);
      champ.value = val;
    }

-- Lucid Lynx --

Hors ligne

#23 Le 22/08/2008, à 17:18

Astier

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Ah... Mais alors pourquoi avec

while (val.match(reg))
    {
      subval = new String(reg.exec(val)).toUpperCase();
      val = val.replace(reg,subval);
      champ.value = val;
    }

cela ne posait pas de problème ? Si on ajoute le [0], cela fonctionne.

Sinon, nouveau souci : là on ne prend pas en compte "D'".
Il faut donc ajouter une regexp de ce genre : " (D'|L')"
J'ai essayé de l'intégrer ainsi :

var regm = new RegExp(" (De|Du|Des) ","") || new RegExp(" (D'|L')","");

ou encore

var regm = new RegExp((" (De|Du|Des|Le|La|Les) ","") || (" (L'|D')"));

mais sans succès. Qu'est-ce que je rate ?

Merci encore, à bientôt.

Hors ligne

#24 Le 22/08/2008, à 17:26

Totor

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

Je n'ai pas la réponse à cette histoire de tableau !

Pour le reste, il te faut passer par une nouvelle regex en supposant qu'un espace peut (ou pas) être présent après l'apostrophe :

var regm = new RegExp(" (L\'|D\')[ ]{0,1}","");

Note :
Cela te fait déjà 3 motifs différents avec le même traitement (mise en majuscule du motif trouvé). C'est récurent tout ça, c'est pourquoi à ta place, je ferai une fonction qui prend en entrée un motif et la chaine à traiter. Cette fonction retournera la chaine transformée.


-- Lucid Lynx --

Hors ligne

#25 Le 22/08/2008, à 19:23

Astier

Re : [JAVASCRIPT] formulaire, expressions régulières, remplacement

C'est-à-dire revenir à ce qu'a proposé Keldath ? Mais dans ce cas-là on perd la récursivité nan ?

Sinon j'ai trouvé ça : http://groups.google.com/group/fr.comp.lang.javascript/browse_thread/thread/61dd401c47c8a7a4
C'est ce que tu avais en tête ?

A+

Hors ligne