Bonjour,
Je voulais juste savoir si il y'a une fonction javascript ou un évènement qui bloque l'utilisateur tant qu'il a pas remplie un champ,du coup il le laisse pas passer à l'autre champ et merci![]()
Bonjour,
Je voulais juste savoir si il y'a une fonction javascript ou un évènement qui bloque l'utilisateur tant qu'il a pas remplie un champ,du coup il le laisse pas passer à l'autre champ et merci![]()
Ca me paraît assez spécifique comme besoin et je ne pense pas qu'il existe de fonction toute faite en javascript pour faire ça.
Par contre, tu peux faire deux fonctions, une sur le focus de tes inputs, une sur le onblur avec une variable qui contient l'input en cours.
En gros, dans ta fonction onfocus, tu regarde si il n'existe pas un champ qui a déjà le focus (stocké dans ta variable) et qui n'est pas entièrement rempli.
Si il en existe un alors tu redonne le focus à cet input (le dernier input que tu a choisi perd donc le focus).
Si il n'en existe pas, tu actualise la variable avec l'input sélectionné.
Et pour le onblur, c'est à peu près la même fonction, c'est à dire que si il y'a un input qui est "en cours", tu lui redonne le focus (et ce sera l'élément en question).
En fait, y'a moyen de factoriser en une seule fonction !
Comme le suggère Difré91, tu peux utiliser le onblur.
Perso je le verrai plus du genre : tu mets tous tes input en "disabled" sauf le premier et sur le "onblur" de chacun tu tests si le "value" est correct si oui tu actives le prochain sinon tu désactives le prochain.
Pour chercher le prochain input, tu peux soit utiliser le DOM directement avec par exemple "nextSibling" ou "parentNode.nextSibling.childNodes".
Sinon tu auras peut-être plus simple en utilisant le getElementsByTagName('input') et indexOf(this)+1.
![]()
Les messieurs ci-dessus te proposent onBlur, j'utiliserais plutôt onKeypress.
Pourquoi ? Parce qu'avec le onBlur, il faut cliquer en dehors du champ pour activer l'évènement. L'utilisateur va donc savoir qu'il faut cliquer sur un champ désactivé ? J'en doute :-)
Si tu utilises le onKeypress, tu peux vérifier à chaque fois qu'une touche est appuyée si tu dois activer le champ suivant ou non :-)
Petit exemple de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <!-- HTML --> <form id="form"> <input type="text"> <input type="text" disabled="disabled"> </form> <!-- /HTML --> // Javascript document.getElementById('form').onkeypress = function(e) { var evt = e || window.event, // IE workaround target = evt.target || evt.srcElement // IE workaround again if (target.value !=== '') { // Si la valeur est ce que tu veux target.nextSibling.disabled = false // Tu actives l'input suivant } }
Oui, c'est bien le onkeypress !
Moi je répondais simplement à la contrainte posée qui était de bloquer sur un champ quand il est en cours de saisie, et non dévoiler les champs les uns après les autres (après, c'est surement la finalité du bouzin).
Partager