[Javascript] Problème de champs, tabulations
Résolu
HostOfSeraphim
Messages postés
7340
Statut
Contributeur
-
baramogo99 -
baramogo99 -
Bonsoir,
Un petit problème que je n'ai pas réussi à résoudre cet après-midi.
Je cherche à faire en sorte que l'utilisateur ne soit pas obligé d'utiliser la tabulation ou sa souris pour remplir les 3 champs d'une date (jour, mois, année). J'ai donc prévu une fonction pour que le focus change dès que 2 caractères sont entrés dans le champ.
Seulement voilà, je souhaiterais également que dans le cas où l'utilisateur souhaite apporter une modification à ses valeurs (sans tout effacer), ce système soit capable de modifier certaines valeurs seulement, en les sélectionnant.
Voici ce que j'ai pour le moment :
Essayez de remplir les champs, et revenez dans le premier champ pour apporter des modifications : le focus "saute" le champ suivant et se place un champ trop loin.
Quelqu'un saurait-il m'indiquer ce que je fais de mal ? Je ne vois pas la logique qui fait que le focus aille trop loin dans ce cas.
Merci !
--
Configuration : Linux Debian Lenny / Noyau 2.6.26 / Gnome / Iceweasel 3
Connexion Internet : ADSL Orange 8M (Livebox)
Un petit problème que je n'ai pas réussi à résoudre cet après-midi.
Je cherche à faire en sorte que l'utilisateur ne soit pas obligé d'utiliser la tabulation ou sa souris pour remplir les 3 champs d'une date (jour, mois, année). J'ai donc prévu une fonction pour que le focus change dès que 2 caractères sont entrés dans le champ.
Seulement voilà, je souhaiterais également que dans le cas où l'utilisateur souhaite apporter une modification à ses valeurs (sans tout effacer), ce système soit capable de modifier certaines valeurs seulement, en les sélectionnant.
Voici ce que j'ai pour le moment :
<html>
<head>
</head>
<body>
<script language="Javascript">
function ChampSuivant(actuel, suivant, limite)
{
if (actuel.value.length == limite)
{
suivant.focus();
}
}
</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>
Essayez de remplir les champs, et revenez dans le premier champ pour apporter des modifications : le focus "saute" le champ suivant et se place un champ trop loin.
Quelqu'un saurait-il m'indiquer ce que je fais de mal ? Je ne vois pas la logique qui fait que le focus aille trop loin dans ce cas.
Merci !
--
Configuration : Linux Debian Lenny / Noyau 2.6.26 / Gnome / Iceweasel 3
Connexion Internet : ADSL Orange 8M (Livebox)
Configuration: OS : Linux CentOS 5.3 Noyau : 2.6.18 Environnement graphique : Gnome Navigateur : Firefox 3 Processeur : Intel Quad Core Q6600 Carte mère : Gigabyte GA-E7AUM-DS2H RAM : 8 Go (OCZ) Disques durs : 2x1 To Seagate Barracuda Carte graphique : Chipset Nvidia Geforce 9400 Boîtier : Antec P182 Ventirad : Noctua NH-U12P Alimentation : Corsair HX520W Moniteur : Samsung 22 pouces (SyncMaster 2233BW)
A voir également:
- [Javascript] Problème de champs, tabulations
- Tabulations word - Guide
- Enlever les tabulations sur outlook - Forum Microsoft Office
- Telecharger javascript pour pc - Télécharger - Langages
- Word : effacer les marques de ¶ ¶ ¶ ¶ ¶ ¶ ¶ ¶ ¶ ¶ - Forum MacOS
- Outlook- Mettre la tablette de tabulation? - Forum Outlook
2 réponses
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.