Prise en compte attribut readonly

Le
Pierre Goiffon
Bonjour,

Je suis très surpris, je n'arrive pas à faire fonctionner l'attribut
readonly que je suis pourtant quasi certain d'avoir vu fonctionner fut
un temps sur des champs input text.

Ainsi, sur la page suivante sur IE7 comme sur Fx 3.6 je peux modifier le
champ texte et cocher radio et checkbox ! Qu'est-ce que je rate donc de
si évident ??!?


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Test readonly</title>
</head>
<body>

<form action="">
<p>
<input type="text" value="ui" name="titi"><br>
<input type="checkbox" readonly name="toto"><br>
<input type="radio" readonly name="tutu">
</p>
</form>

</body>
</html>
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Masson
Le #22041681
Le 05/02/2010 16:53, Pierre Goiffon a écrit :

<input type="text" value="ui" name="titi"><br>
<input type="checkbox" readonly name="toto"><br>
<input type="radio" readonly name="tutu">




Sans avoir testé : en strict as-tu le droit de laissé un attribut sans
valeur ? (je sais plus si c'est html strict ou xhtml qui l'impose et
j'ai pas le tps de chercher)
Dans tous les cas, écrire readonly="readonly" ne fera pas de mal.
Pierre Goiffon
Le #22041671
On 05/02/2010 17:01, Olivier Masson wrote:
<input type="text" value="ui" name="titi"><br>
<input type="checkbox" readonly name="toto"><br>
<input type="radio" readonly name="tutu">



Sans avoir testé : en strict as-tu le droit de laissé un attribut sans
valeur ? (je sais plus si c'est html strict ou xhtml qui l'impose et
j'ai pas le tps de chercher)
Dans tous les cas, écrire readonly="readonly" ne fera pas de mal.



J'ai essayé en HTML 4 strict et transitionnal, pas de différence.

Pour la valeur d'attribut, c'est une contrainte XHTML :
http://www.w3.org/TR/xhtml1/diffs.html#h-4.5
Cela dis je viens de découvrir une règle de compatibilité que je ne suis
pas sûr de comprendre :
http://www.w3.org/TR/xhtml1/#C_10

Et la ref readonly HTML :
http://www.w3.org/TR/html4/interact/forms.html#adef-readonly
Paul Gaborit
Le #22041661
À (at) Fri, 05 Feb 2010 16:53:47 +0100,
Pierre Goiffon
Je suis très surpris, je n'arrive pas à faire fonctionner l'attribut
readonly que je suis pourtant quasi certain d'avoir vu fonctionner fut
un temps sur des champs input text.




Petit extrait de

readonly (readonly) #IMPLIED -- for text and passwd --

--
Paul Gaborit -
Pierre Goiffon
Le #22041651
On 05/02/2010 17:51, Paul Gaborit wrote:
Je suis très surpris, je n'arrive pas à faire fonctionner l'attribut
readonly que je suis pourtant quasi certain d'avoir vu fonctionner fut
un temps sur des champs input text.



Petit extrait de

readonly (readonly) #IMPLIED -- for text and passwd --



Ok, et bien vu !
Cela explique le non fonctionnement sur radio et checkbox. Mais dans ma
page exemple, ça ne fonctionne pas non plus sur le text...
Pierre Goiffon
Le #22041631
On 05/02/2010 18:09, Pierre Goiffon wrote:

readonly (readonly) #IMPLIED -- for text and passwd --



Cela explique le non fonctionnement sur radio et checkbox. Mais dans ma
page exemple, ça ne fonctionne pas non plus sur le text...



Hahum !
J'avais oublié le readonly sur le input text :D

Avec le code suivant pas de soucis pour le texte, par contre ça ne
fonctionne pas sur checkbox et radio.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Test readonly</title>
</head>
<body>

<form action="">
<p>
<input type="text" value="ui" name="titi" readonly><br>
<input type="checkbox" readonly name="toto"><br>
<input type="radio" readonly name="tutu">
</p>
</form>

</body>
</html>
Yop
SAM
Le #22041601
Le 2/5/10 7:06 PM, Yop a écrit :
Essaye DISABLED




Ha ! voilà le terme que je cherchais un peu en vain !
M'semblait bien que ce n'était pas tout à fait "readonly"
(comme si on pouvait *lire* un bouton ... !? )

Pierre, avec son problème, m'avait un peu destabilisé là ;-)

Des fois où on peut tourner en rond autour de qque chose trop simple !
--
sm
Pierre Goiffon
Le #22041381
On 05/02/2010 23:05, SAM wrote:
Essaye DISABLED



Ha ! voilà le terme que je cherchais un peu en vain !



C'est pour ne pas utiliser disabled que je cherchais autre chose :)

Les input disabled ne sont pas envoyés en submit, et dans mon cas
c'était fort problématique (des input à passer en readonly de manière
dynamique en JS, car suivant la valeur d'une autre option dans la page
ils doivent pouvoir être modifiés ou pas, et donc le framework côté
serveur a du mal s'il ne reçoit que certaines fois les valeurs des
input, suivant qu'ils ont été placés en disabled ou non)
Olivier Miakinen
Le #22041351
Le 09/02/2010 15:59, Pierre Goiffon a écrit :

C'est pour ne pas utiliser disabled que je cherchais autre chose :)

Les input disabled ne sont pas envoyés en submit, et dans mon cas
c'était fort problématique (des input à passer en readonly de manière
dynamique en JS, car suivant la valeur d'une autre option dans la page
ils doivent pouvoir être modifiés ou pas, et donc le framework côté
serveur a du mal s'il ne reçoit que certaines fois les valeurs des
input, suivant qu'ils ont été placés en disabled ou non)



Il y a toujours une solution, mais de plus en plus usineàgazesque :
quand tu veux passer un input non texte en readonly, ton script JS le
passe en disabled et rajoute un input hidden de même nom et de même
valeur ; quand tu veux le repasser en read-write, le script retire le
disabled en même temps qu'il supprime l'input hidden.

Bon courage !
SAM
Le #22041301
Le 2/9/10 4:20 PM, Olivier Miakinen a écrit :
Le 09/02/2010 15:59, Pierre Goiffon a écrit :
C'est pour ne pas utiliser disabled que je cherchais autre chose :)

Les input disabled ne sont pas envoyés en submit, et dans mon cas
c'était fort problématique (des input à passer en readonly de manière
dynamique en JS, car suivant la valeur d'une autre option dans la page
ils doivent pouvoir être modifiés ou pas, et donc le framework côté
serveur a du mal s'il ne reçoit que certaines fois les valeurs des
input, suivant qu'ils ont été placés en disabled ou non)



Il y a toujours une solution, mais de plus en plus usineàgazesque :
quand tu veux passer un input non texte en readonly, ton script JS le
passe en disabled et rajoute un input hidden de même nom et de même
valeur ; quand tu veux le repasser en read-write, le script retire le
disabled en même temps qu'il supprime l'input hidden.

Bon courage !



Ben ... pourquoi pas simplement un hidden attaché au bouton
et du bouton on en n'a plus que faire (le php ne veut que le hidden)

<fieldset><legend>Les trucs</legend>
voir/cacher les trucs: <input type="checkbox" onclick="valuate(this)">
<p><label for="truc1">
truc 1: <input type="checkbox" value="1" onclick="ok(this)" id="truc1">
<input type="hidden" name="truc1" value="0"></label>
<label for="truc2">
truc 2: <input type="checkbox" value="2" onclick="ok(this)" id="truc2">
<input type="hidden" name="truc2" value="0"></label>
<label for="truc3">
truc 3: <input type="checkbox" value="3" onclick="ok(this)" id="truc3">
<input type="hidden" name="truc3" value="0"></label></p>
</fieldset>

function ok(quoi) {
var v = quoi.checked, o = quoi.value;
while(quoi.tagName!='LABEL') quoi=quoi.parentNode;
quoi.getElementsByTagName('INPUT')[1].value = v? o : '0';
}
function valuate(quoi) {
var v = quoi.checked;
while(quoi.tagName!='FIELDSET') quoi=quoi.parentNode;
quoi = quoi.getElementsByTagName('INPUT');
for(var i=1, n=quoi.length; n>i; i++)
if(quoi[i].type=='checkbox') quoi[i].disabled= !v;
}

--
sm
Publicité
Poster une réponse
Anonyme