Question

J'ai un formulaire comme celui-ci:

<form name="mine">
    <input type=text name=one>
    <input type=text name=two>
    <input type=text name=three>
</form>

Lorsque l'utilisateur tape une valeur dans "un", je souhaite parfois ignorer le champ "deux", en fonction de ce qu'il a saisi. Par exemple, si l'utilisateur tape '123' et utilise la tabulation pour passer au champ suivant, je souhaite le ignorer et accéder au champ trois.

J'ai essayé d'utiliser OnBlur et OnEnter , sans succès.

Essayez 1:

<form name="mine">
    <input type=text name=one onBlur="if (document.mine.one.value='123') document.three.focus();>
    <input type=text name=two>
    <input type=text name=three>
</form>

Essayez 2:

<form name="mine">
    <input type=text name=one>
    <input type=text name=two onEnter="if (document.mine.one.value='123') document.three.focus();>
    <input type=text name=three>
</form>

mais aucune de ces œuvres. On dirait que le navigateur ne vous permet pas de gâcher la mise au point alors que celle-ci change.

BTW, tout cela a été essayé avec Firefox sous Linux.

Était-ce utile?

La solution

Essayez d'attacher l'attribut tabindex à vos éléments puis par programme (changez-le en javaScript):

<INPUT tabindex="3" type="submit" name="mySubmit">

Autres conseils

Vous pouvez utiliser l'événement onfocus sur le champ deux, qui sera appelé lorsque il reçoit le focus. À ce stade, la valeur du champ 1 doit être mise à jour et vous pouvez alors effectuer votre vérification.

Si vous utilisiez la méthode que vous décrivez et que celle-ci fonctionnait, le focus serait également modifié lorsque l'utilisateur clique sur le champ au lieu de le tabuler. Je peux vous garantir que cela créerait un utilisateur frustré. (Pourquoi est-ce que ça ne marche pas, ça me dépasse.)

À la place, comme indiqué précédemment, modifiez le tabindex des champs appropriés dès que le contenu du champ 1 est modifié.

<form name="mine">
    <input type="text" name="one" onkeypress="if (mine.one.value == '123') mine.three.focus();" />
    <input type="text" name="two">
    <input type="text" name="three">
</form>

Essayez onkeypress au lieu de onblur . De plus, sur le onfocus du champ deux, vous devriez envoyer le message à trois. Je suppose que vous ne voulez pas qu’ils en tapent deux si l’un est 123, vous pouvez donc vérifier que sur deux onfocus et les envoyer à trois.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top