ajouter un événement onfocus à un champ input - HTML/CSS - Programmation
Marsh Posté le 13-03-2006 à 09:52:54
la syntaxe (enfin une des pour etre exacte) pour changer un evement est la suivante:
Code :
|
avec unEvenement qui peut valoir onload, onclick, onmouseup, onmousedown, onblur ...
Tu as d'autres syntaxes, notamment avec attachEvent, celle du dessus à l'avantage de marcher sur a peu près tous les navigateurs.
Par ailleurs, quand tu commences a faire des trucs comme ça ( et particulierement une "application web" ), je te déconseille d'utiliser la "vieille syntaxte" javascript à base de form.elements...
Renseigne toi sur les fonction DOM, tu verras c'est bien plus pratique!!!
Marsh Posté le 13-03-2006 à 14:13:10
j'ai tenté ceci mais ça sonnait faux, enfin ça me paraissait bizarre et effectivement ça ne marche pas...
Code :
|
sachant que :
Code :
|
Sinon qqun aurait de bonnes sources de renseignements sur le DOM ?
Marsh Posté le 13-03-2006 à 14:23:08
naaaan t'as po compris
Code :
|
tu peux passer this comme argument car au moment de l'appel de la fonction ( donc dans le onFocus) this pointera sur l'objet qui vient d'être onfocuser ( si ça existe comme mot).
Tu trouveras plein de renseignements sur pleins de site sur le dom.
la présentation sur le site developer.mozilla.org est pas mal.
Tu trouveras aussi quelques exemples assez clairs.
Après le DOM est "censé" être un standard implémenté de la même façon sur tous les navigateurs, fais attention il y a quand même quelques subtiles nuances.
Enfin:
chrisbk a écrit : DOM1 est un autre jour |
Marsh Posté le 15-03-2006 à 14:24:51
Citation :
|
j'ai beau essayer ça ne marche pas...
Marsh Posté le 15-03-2006 à 15:08:45
boulette de ma part pas de F majuscule dans le onfocus !!!
Code :
|
Marsh Posté le 16-03-2006 à 09:25:11
Bon ben j'ai essayé ça :
Code :
|
pour ça :
Code :
|
Mais comme ça ne marchait pas j'ai essayé moins compliqué, j'ai fait comme toi précédemment (plus ou moins) :
Code :
|
et plus loin :
Code :
|
et en fait ben ça marche pas non plus :'C...
Marsh Posté le 16-03-2006 à 09:57:01
le code que je t'ai donné je l'ai vérifié sur IE/FF garanti il marche!!!
Mais je pense que c'est l'utilisation de
Code :
|
qui suxe...
Utilise plutot les fonctions DOM:
Code :
|
Marsh Posté le 16-03-2006 à 13:55:37
J'ai éclairci mon code, et en fait j'ai trouvé une erreur dans la console de la barre d'outils développeur FF :
Citation : Erreur : [Exception... "'Permission refusée de modifier la propriété XULElement.selectedIndex' when calling method: [nsIAutoCompletePopup::selectedIndex]" nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)" location: "JS frame :: http://b8183/niko/code/appli/manip [...] 2110&gra1= :: enleverFocus :: line 75" data: no] |
voici la ligne concernée :
Code :
|
j'ai aussi essayé avec ceci, avec ou sans quotes, mais même résultat :
Code :
|
Marsh Posté le 16-03-2006 à 13:57:46
Pour que tu comprennes mieux la globalité voici les fonction entières, en espérant que ça ne soit pas trop long (toute la fonction n'est pas utile a connaître...)
Code :
|
Marsh Posté le 16-03-2006 à 14:23:21
ta fonction enleverFocus elle est pas bonne!
Code :
|
Bon par ailleurs c'est completement stupide de faire un onfocus -> blur, ça veut dire que tu veux pas que le champs puisse être saisi, alors autant le mettre en disabled ou read-only.
Enfin si tu tiens vraiment a garder ton truc comme ça, envoie tout le code de ta page parce que là j'ai du mal a inventer le formulaire qui va avec
Marsh Posté le 16-03-2006 à 15:48:35
Alors j'ai essayé d'inclure le code correspondant et nécessaire à la compréhension du pbm, mais apparemment il est tout de même trop important le post ne fontcionne pas.
Alors pour t'expliquer vite fait, j'ai un ensemble de lignes, je donne le choix soit de les supprimer soit de les modifer, ceci dit le script fonctionne par groupe de lignes, ce qui veut dire que pour les lignes choisies, je conserve l'action correspondante dans un champ caché. Et là pour différencier les champs suppr ou les champs modif, je change la couleur, et j'empêche l'utilisateur de faire des modifs sur les lignes qu'il désire suppr.
Un champs doit donc pouvoir passer de readOnly a read et write lorsque je change l'action désirée.
Ceci dit, il est vrai qu'un champ en readOnly à la place d'un onFocus="this.blur()" est bien plus pratique et plus approprié. Mais je ne sait pas non plus cmt est-ce qu'on affecte le readOnly a un champ.
J'ai essayé ça :
Code :
|
mais ça ne marche pas...
Marsh Posté le 16-03-2006 à 15:50:34
Tiens j'ai remplacé ma fonction enleverFocus() par la tienne, et ça marche, pourtant j'ai tjr la même erreur dans la console.
Marsh Posté le 16-03-2006 à 16:03:18
Yertle a écrit : ... un gros paté que je comprends pas |
T'as pas un lien dessus ça irait plus vite
Yertle a écrit : Ceci dit, il est vrai qu'un champ en readOnly à la place d'un onFocus="this.blur()" est bien plus pratique et plus approprié. Mais je ne sait pas non plus cmt est-ce qu'on affecte le readOnly a un champ.
mais ça ne marche pas... |
Tiens ça ça marche t'as qu'a t'en inspirer:
Code :
|
Yertle a écrit : Tiens j'ai remplacé ma fonction enleverFocus() par la tienne, et ça marche, pourtant j'ai tjr la même erreur dans la console. |
C'est que l'erreur est dans le reste de ton code!!!
Mais honnetement tu gagnerais beaucoup en lisibilité à te servir des fonctions dom getElementById et getElementsByTagName
Marsh Posté le 17-03-2006 à 09:25:53
Citation : ...l'erreur est dans le reste de ton code |
Non, l'erreur est bien sur le changement de onFocus, la console de debug me renvoie à cette ligne précisément.
Pour les fonctions DOM, je ne peux pas les utiliser paske je doit parcourir un formulaire dans son intégralité, et non un champ en particulier, je ne peux donc pas utiliser leur id on tag pour les repérer (d'ailleurs la console ne me donne ni erreur ni warning lors des parcours des formulaires alors qu'elle m'en donnait à d'autres endroits où là les getElementById était obligatoires pour rester dans les standards).
Pour finir, je te remercie pronfondément paske je viens grâce à toi de résoudre le pbm avec des readOnly, tout marche et sans erreur
Merci pour ton aide et ta patience et à bientot peut être
Marsh Posté le 09-03-2006 à 10:35:06
Salut à tous. Je suis en train de développer une application web en html php javascript et j'aurais besoin à un moment donné de changer ou d'ajouter un événement onFocus à un champ input text.
Je m'explique, j'ai un script qui liste le contenu d'une base de données, et l'utilisateur doit pouvoir modifier ou supprimer une ligne.
Lorsqu'il choisit de supprimer ou de modifier une ligne, il clique sur un bouton radio et un formulaire de saisie se remplit avec les valeurs correspondantes.
Seulement voila, si l'action est "supprimer" j'aimerai que les champs text ne soient plus modifiables.
J'ai essayé plusieurs trucs genre : form.elements[i].onFocus = "this.blur()"; ou alors form.elements[i].readOnly = true;
et qq trucs comme ça mais rien n'y fait.
Après qq recherches sur le net, j'ai tjr rien trouvé .
Qqun aurait une solution ?
Merci d'avance.