Page 1 sur 1

Texte lecture seule

Posté : 18 mars 2005, 12:39
par MustyAlien
Bonjour les zamis,

Voilà j'aurais une petite question, malgré le fait que je créer le code de la page dynamiquement via le php, je pense que ça doit être une astuce html qui pourrait me règler mon problème.
Voici mon code (que j'ai réduit au strict minimum ;)):

Code : Tout sélectionner

<td onMouseOver="monAction">du texte</td>
Donc, comme vous le voyez, j'ai une action sur le rollover de la cellule, le soucis c'est que quand je passe sur le texte de la cellule je perds le focus sur la cellule et quand je reviens sur la cellule, paf mon action se relance, galèèère :(
Je connais bien l'option "readonly" pour les champs texte dans les forms mais je n'ai aucune idée du comment faire pour du texte tout simple...

Quelqu'un aurait une idée ?

Merci d'avance :wink:

Posté : 18 mars 2005, 12:44
par flitox
onMouseOver signifie que l'action n'est exécutée qu'au survol de la souris sur la cellule donc essaye une autre méthode (onclick, onmouseout, etc...)

Posté : 18 mars 2005, 12:58
par MustyAlien
merci, Pour le onMouseOver je sais, c'est bien parceque j'en ais besoin que je l'ai mis :wink:

Posté : 18 mars 2005, 13:10
par flitox
Montre plutôt ton "vrai" code parce que avec celui que tu as montré, l'action que tu as décris est logique vu qu'elle s'effectue au passage de la souris.

Posté : 18 mars 2005, 13:49
par MustyAlien
Je veux bien mettre mon code mais ça ne vas t'aider en rien, étant que ma quetion est : est-ce qu'on peut faire en sorte que la cellule ne perde pas son focus quand je passe sur le texte contenu dans cette cellule ?

Voici mon code tout de même :

Code : Tout sélectionner

while($ligneCoursToday = mysql_fetch_row($resultCoursToday)){ echo "<td width='".(($ligneCoursToday[1] - $idEnd)*$largeHeure)."'></td>"; $idEnd = $ligneCoursToday[2]; echo "<form action='infos.php?a=".$datePoggi."&s=".$ligneCoursToday[1]."&e=".$ligneCoursToday[2]."' method='POST' target='infos'><td class='td4' bgcolor='"; //Colorisation de la cellule en fonction du type de cours... if($ligneCoursToday[4] == $tabCours[0]){ echo $tabCours[$tabCours[0]][0]; } if($ligneCoursToday[4] == $tabCours[1]){ echo $tabCours[$tabCours[1]][0]; } if($ligneCoursToday[4] == $tabCours[2]){ echo $tabCours[$tabCours[2]][0]; } if($ligneCoursToday[4] == $tabCours[3]){ echo $tabCours[$tabCours[3]][0]; } if($ligneCoursToday[4] == $tabCours[4]){ echo $tabCours[$tabCours[4]][0]; } echo "' width='".(($idEnd - $ligneCoursToday[1])*$largeHeure)."' onMouseOver=\"submit();\">"; //Couleur du texte... echo "<font color='"; if($ligneCoursToday[4] == $tabCours[0]){ echo $tabCours[$tabCours[0]][1]; } if($ligneCoursToday[4] == $tabCours[1]){ echo $tabCours[$tabCours[1]][1]; } if($ligneCoursToday[4] == $tabCours[2]){ echo $tabCours[$tabCours[2]][1]; } if($ligneCoursToday[4] == $tabCours[3]){ echo $tabCours[$tabCours[3]][1]; } if($ligneCoursToday[4] == $tabCours[4]){ echo $tabCours[$tabCours[4]][1]; } echo "'>"; //Remplacement des décimal en fonction de la décimal (.0 ou .5)... $decimal1 = substr($ligneCoursToday[1], -2); $decimal2 = substr($ligneCoursToday[2], -2); if($decimal1 == ".0"){ echo str_replace($decimal1, "", $ligneCoursToday[1]); }else{ echo str_replace($decimal1, ":30", $ligneCoursToday[1]); } echo "-"; if($decimal2 == ".0"){ echo str_replace($decimal2, "", $ligneCoursToday[2]); }else{ echo str_replace($decimal2, ":30", $ligneCoursToday[2]); } echo "</font></td></form>";
PS : En passant joli taff sur ton site :wink:

Posté : 18 mars 2005, 15:36
par flitox
Un truc encore mieux !

Tu donnes l'url avec ta page où se trouve la cellule parce que là je dois avoir trop mangé pour ne rien comprendre à ce point là :lol:

Merci pour le "PS : En passant joli taff sur ton site" ;)

Posté : 18 mars 2005, 16:24
par Cyrano
Salut,
il y aurait une astuce à développer en JavaScript. Dans tes zones de textes susceptibles de recevoir le focus que tu voudrais le garder tout en jouant avec la souris à survoler des zones réactives ailleurs dans le document, il faudrait rajouter un évènement onBlur qui enregistre dans un champ caché le nom du champ ou se trouvait le focus. Dans ta cellule <td>, le onBlur déclencherait alors l'envoi du focus dans le champ... enregistré dans le champ caché lorsque le focus a quitté la zone de saisie.
Je suis pas sûr d'être très clair, mais c'est techniquement la seule manière que je vois de résoudre ton problème. Pour illustrer (juste au cas ou..) disons que tu as trois zones de saisies (zt1, zt2, zt3), une cellule de tableau réactive et un champ caché zc1. L'évènement onBlur des zt1, zt2 et zt3 déclenche l'enregistrement de la valeur "zt1" ou "zt2" ou "zt3" dans zc1. L'évènement de la cellule onBlur récupère le nom du champ (valeur contenue dans zc1) et envoi le focus dedans.

Mais si tu laisses la souris sur la cellule réactive, le focus sera perdu pour la zone de saisie et là, je vois pas comment faire.

Posté : 18 mars 2005, 19:35
par MustyAlien
Bon apparemment, c'est un bug dans ma prog PHP (php qui écrit la page html), car dans la logique (voir lien ci-après) ça marche impec

Action_sur_rollover

Merci pour votre aide les zamis :wink:

Posté : 18 mars 2005, 21:50
par MustyAlien
En effet, c'était bien une inversion de balise (mauvais emplacement plutôt) qui faisait que mon rollover perdait les pédales...

Merci pour votre aide :wink:

Posté : 18 mars 2005, 22:41
par flitox
Ta page n'effectue pas d'action au survol de la cellule sous Firefox.

Par contre avec IE impeccable.

C'est quand même gênant que ça ne soit pas compatible ;)

Posté : 18 mars 2005, 22:49
par MustyAlien
C'est quand même gênant que ça ne soit pas compatible ;)
Tout simplement parce que ce n'était qu'une page d'exemple pour vous montrer le but de mon code, donc je ne voulais pas perdre de temps à le rendre compatible :wink:
Pis je m'en voudrais d'arriver à un truc aussi moche au final :) :D :) :D

Posté : 18 mars 2005, 22:50
par flitox
Certes :lol:

Mais bon mieux vaut prévenir que guérir ;)

Posté : 18 mars 2005, 22:57
par MustyAlien
c'est vrai aussi :wink:
C'est peut-être aussi parce que je suis un peu faignant LOL