Bonjour tout le monde.
Je suis confronté à un petit problème que ni google, ni la FAQ, ni les précédents posts ne m'ont aidé à résoudre.
Voici le sujet : J'ai un champ password que je veux remplir automatiquement quand une checkbox est cliquée. Dans ce cas l'utilisateur ne DOIT PAS pouvoir changer le contenu de ce champ. En revanche, quand l'utilisateur décoche cette checkbox, je voudrais effacer le contenu du champ, y autoriser l'écriture et enfin lui donner le focus.
J'arrive à tout faire excepter autoriser l'écriture. En fait j'ai essayé en désactivant le champ (DISABLED) et tout marche super bien... sauf quand je fais un submit auquel cas je n'ai évidement pas accès à mon champ password.
Si maintenant je passe en readonly, d'une l'affichage est moins beau (je le préfère grisé, mais je suppose que je pourrais changer la couleur dans un script JS) et surtout de deux, je n'arrive pas à rendre l'écriture possible sur on champ.
Voici le code, si quelqu'un trouve d'où vient ce f*** problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <TD> <input type="password" name="<%=MessageContent.PASSWORD%>" id="<%=MessageContent.PASSWORD%>" style="width:200" value="<%=projects.get(0)%>" readonly="readonly"> </TD> <TD></TD> <TD> <input type="checkbox" name="useNameAsPassword" checked onclick="inputEnable('<%=MessageContent.PASSWORD%>', this.checked, this);">Use project name for password </TD>
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
18
19
20
21
22
23
24 function inputEnable(id, state, obj) { var divObj = null; if (document.getElementById) { divObj = document.getElementById(id); } else if(document.all) { divObj = document.all(id); } else if (document.layers) { divObj = document.layers[id]; } //Here, divObj == document.forms[0].<%=MessageContent.PASSWORD%> if(state && divObj){ alert("add att"); divObj.setAttribute("readonly","readonly"); }else if(divObj){ alert("remove att"); divObj.removeAttribute("readonly"); divObj.focus(); } _update(obj); }
Partager