2008-09-17 6 views
1

J'ai une forme comme ceci:Comment passer des champs en utilisant javascript?

<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 veux parfois sauter le champ « deux », en fonction de ce qu'il a tapé. Par exemple, si l'utilisateur tape '123' et utilise Tab pour passer au champ suivant, je veux l'ignorer et aller 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 faire la mise au point pendant que le focus change.

BTW, tout cela a essayé avec Firefox sur Linux.

Répondre

3

Essayez d'attacher l'attribut tabindex à vos éléments et programmaticaly (en javaScript changer):

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

Vous pouvez utiliser l'événement onfocus sur le terrain deux, qui sera appelée quand actiff. À ce stade, la valeur du champ 1 doit être mise à jour et vous pouvez alors effectuer votre vérification.

1

Si vous utilisiez la méthode que vous décrivez et qu'elle fonctionnait, le focus changerait également lorsque l'utilisateur cliquait sur le champ au lieu de le tabuler. Je peux vous garantir que cela se traduirait par un utilisateur frustré. (Pourquoi exactement cela ne fonctionne pas est au-delà de moi.)

Au lieu de cela, comme indiqué plus haut, changez le tabindex des champs appropriés dès que le contenu du champ un change.

0
<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> 
0

Essayez onkeypress au lieu de . En outre, sur le onfocus du champ deux est l'endroit où vous devriez envoyer à trois. Je suppose que vous ne voulez pas qu'ils tapent dans deux si l'on est 123, donc vous pouvez simplement vérifier que sur deux onfocus et envoyer à trois.

Questions connexes