[Javascript] Problème de champs, tabulations
Résolu/Fermé
HostOfSeraphim
Messages postés
6750
Date d'inscription
jeudi 2 février 2006
Statut
Contributeur
Dernière intervention
31 juillet 2016
-
8 oct. 2009 à 20:21
baramogo99 - 20 nov. 2009 à 18:19
baramogo99 - 20 nov. 2009 à 18:19
A voir également:
- [Javascript] Problème de champs, tabulations
- Tabulations - Guide
- Telecharger javascript - Télécharger - Langages
- Word mettre à jour tous les champs ✓ - Forum Word
- Echec mise à jour champs Word ✓ - Forum Word
- Générique champs elysées john miles - Forum Musique / Radio / Clip
2 réponses
HostOfSeraphim
Messages postés
6750
Date d'inscription
jeudi 2 février 2006
Statut
Contributeur
Dernière intervention
31 juillet 2016
1 608
9 oct. 2009 à 13:43
9 oct. 2009 à 13:43
Solution trouvée :
Le problème se produisait lors d'une frappe rapide, suffisamment rapide pour que le onKeyUp réagisse trop tard. De cette manière, comme c'est le onKeyUp qui incrémente le compteur, le changement de focus ne peut se faire tant qu'il n'est pas "revenu".
<html> <head> </head> <body> <script language="Javascript"> var cpt = 0; function ChampSuivant(actuel, suivant, limite) { cpt++; if (cpt == limite) { suivant.select(); cpt = 0; } } </script> <form name="form"> <input type="text" name="champ1" size=2 maxlength=2 onKeyUp="ChampSuivant(champ1,champ2,2)"> / <input type="text" name="champ2" size=2 maxlength=2 onKeyUp="ChampSuivant(champ2,champ3,2)"> / <input type="text" name="champ3" size=2 maxlength=2 onKeyUp="ChampSuivant(champ3,champ4,2)"> <br/> <input type="text" name="champ4" size=2 maxlength=2 onKeyUp="ChampSuivant(champ4,champ5,2)"> / <input type="text" name="champ5" size=2 maxlength=2 onKeyUp="ChampSuivant(champ5,champ6,2)"> / <input type="text" name="champ6" size=2 maxlength=2> </form> </body> </html>
Le problème se produisait lors d'une frappe rapide, suffisamment rapide pour que le onKeyUp réagisse trop tard. De cette manière, comme c'est le onKeyUp qui incrémente le compteur, le changement de focus ne peut se faire tant qu'il n'est pas "revenu".
En améliorer:
avec un appel de cette fonction du type : onkeypress="sauterchamp(this);" dans un input.
function sauterchamp(element){
if(element.value.length>=element.maxLength){
numchampsuivant=Number(element.name.substr(element.name.length-1));
nomchampsuivant=element.name.substr(0,element.name.length-1);
numchampsuivant++;
nomchampsuivant+=numchampsuivant;
eval("document.ficheparticipant."+nomchampsuivant+".focus()");
}
}
A NOTER QU'IL FAUT QUE LES NOMS DES INPUT AIENT UN TRONC COMMUN ET UN CHIFFRE QUI SE SUIT.
EXEMPLE: champ1 | champ2 | champ 3 etc...
CODE VALABLE JUSQU'A 10 CHAMPS. SINON A MODIFIER.
avec un appel de cette fonction du type : onkeypress="sauterchamp(this);" dans un input.
function sauterchamp(element){
if(element.value.length>=element.maxLength){
numchampsuivant=Number(element.name.substr(element.name.length-1));
nomchampsuivant=element.name.substr(0,element.name.length-1);
numchampsuivant++;
nomchampsuivant+=numchampsuivant;
eval("document.ficheparticipant."+nomchampsuivant+".focus()");
}
}
A NOTER QU'IL FAUT QUE LES NOMS DES INPUT AIENT UN TRONC COMMUN ET UN CHIFFRE QUI SE SUIT.
EXEMPLE: champ1 | champ2 | champ 3 etc...
CODE VALABLE JUSQU'A 10 CHAMPS. SINON A MODIFIER.