11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Voila j'ai 2 champs textes et je souhaite que lorsque l'un des deux prend le focus l'autre soit disabled?
Comment faire?

D'avance Merci
Basiquement, il suffit de faire :
<input type="text" id="txt_1" onfocus="javascript:document.getElementById('txt_2').disabled=true" onblur="javascript:document.getElementById('txt_2').disabled=false">
<input type="text" id="txt_2" onfocus="javascript:document.getElementById('txt_1').disabled=true" onblur="javascript:document.getElementById('txt_1').disabled=false">


Mais il y a de bien meilleurs solutions selon ton code HTML.
Modifié par MacIntoc (15 Feb 2007 - 15:59)
Merci MAcIntoc pour cette réponse.

Pour être plus explicite je post le formulaire:
le problème et le suivant si on saisie une date dans le champ date1 on ne doit pas pouvoir saisir dans les champs date2 et date3 et inversement.

<form action="" method="post">
<label>Aura lieu le : </label>
<input name="date1" type="text" /><br />
<label>Aura lieu du : </label>
<input name="date2" type="text" /> au <input name="date3" type="text" /><br />
<input name="Valider" type="submit" value="Submit" />
</form>


Quelle solution est le mieux adaptée à ce genre de problème.

Merci.
Bonjour.

Peut-être que jouer sur le contenu des champs est plus intéressant. En effet avec la solution donnée précédemment l'utilisateur peut aller sur le champ 1, rentrer une donnée, sortir du champ 1 et aller sur le champ 2 qui sera alors clickable ( enfin c'est ce que çà devrait faire, non ? ).

Donc il vaudrait peut-être mieux se servir de l'évènement "onkeyup" et tester à ce moment là le champ pour savoir s'il est vide et si c'est le cas débloquer les autres. Ainsi l'utilisateur pourrait revenir sur son choix en effaçant le premier ou les deux autres.

Il ne faut pas oublier également que cette vérification doit ce faire de toute façon au niveau du serveur car le Javascript pourrait être désactivé.

Voilà je sais pas si j'ai été clair mais bon j'ai essayé.

Nota : tu devrais changer le titre du sujet car ce que tu cherches n'est pas réellement un problème de "onfocus".
Modifié par CNeo (15 Feb 2007 - 20:27)
Hello,
Loto a écrit :
le problème et le suivant si on saisie une date dans le champ date1 on ne doit pas pouvoir saisir dans les champs date2 et date3 et inversement.
A mon avis, ce n'est pas une très bonne idée. Quels champs seront actifs au départ ? Comment l'utilisateur va-t-il deviner qu'il doit effacer le contenu d'un ou plusieurs champs pour remplir les autres ? La solution utilisée en général consiste à ajouter un radio button pour chaque groupe de champs, qui activera le groupe en question et désactivera l'autre.

Par ailleurs, sais-tu que tes <label> ne servent à rien sans l'attribut for ? De plus, tu ne peux pas placer directement tes <label> et <input> dans le <form>.