11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai installé un effaceur de champ de formulaire au (re)chargement de la page. ça marche très bien sous ie, mais Firefox (2.0) n'efface rien (pas de message d'erreur non plus).

dans le HEAD il y a :


function effacer()
{document.getElementById("item1").value="";}


dans le BODY il y a le formulaire avec, par exemple :


<input id="item1" type="text" name="NOM">


Est-ce que Firefox ne comprend pas getElementById ? Ou quoi d'autre ?
Merci pour une réponse.
dorjee a écrit :

Est-ce que Firefox ne comprend pas getElementById ?


Si tu avais pris la bonne habitude de tester la disponibilité des fonctions avant de les utiliser, tu le saurais...

(Credit Laurent Denis & Koala64 qui m'ont un jour fait cette leçon !)

Faut bien que je montre que je retiens quelques trucs de temps en temps.

Au fait, si ce que tu cherches est de donner une valeur initiale à ton INPUT, pourquoi n'utilises-tu pas l'attribut VALUE dans ton html ?
Modifié par aCOSwt (14 Feb 2007 - 09:04)
Hello,
dorjee a écrit :
Est-ce que Firefox ne comprend pas getElementById ? Ou quoi d'autre ?
Si, heureusement. Smiley smile

As-tu un exemple de ton problème en ligne ?
Merci d'abord pour vos réponses, quelles qu'elles soient.

Pour aCOSwt : il y a bien pour chaque item value="" (j'avais oublié de le mettre ci-dessus). Cependant, au rechargement de la page (par exemple, avec un Back suite à une redirection d'un result pour l'envoi d'un form2mail), ce ne sont pas les value="" qui vont effacer le formulaire. Le formulaire s'affiche rempli à cause de la fonction de mémorisation des champs de formulaire des navigateurs (par exemple, la "saisie automatique" sous ie ou "se souvenir des informations saisies dans les formulaires..." de Firefox).

Pour Julien Royer : pas d'exemple en ligne (en fait le enligne n'est pas encore publique... Smiley cligne ). Mais voici un exemple de code complet ci-dessous que vous pouvez tester chez vous. J'ai mis le minimum.


<!doctype html public "-//w3c//dtd html 3.2//en">

<html>

<head>
<title>Test</title>

<script language="JavaScript">
<!-- ;

function effacer()
{document.getElementById("item1").value="";}

// end hide -->
</script></head>

<body onLoad="effacer();">

Nom* :	 <input id="item1" type="text" name="NOM">

</body>

</html>


J'ai testé à l'instant ce code sous FF et... surprise, ça marche !
Je vais sur mon site en construction et je teste encore, en fait ça marche constamment sous IE (les champs s'effacent au rechargement de la page). Mais sous FF ça marche de façon aléatoire (à vue de nez 1 effacement sur 10 coups).

Donc, ma question est de trouver une méthode d'effacement des champs de formulaires qui marcherait à coup sûr sur FF (comme sur IE). Sachant que les fonctions de mémorisation des saisies formulaires sont gérables du côté client. Il s'agit donc de contrecarrer une fonction "fonctionnante".

Nota : je suis pas un expert du JS, ni du PHP, je me contente d'adapter des scripts, c'est un début. Smiley lol
Je ne suis pas sûr que l'événement "load" soit déclenché par tous les navigateurs quand tu navigues dans l'historique.

Petite remarque en passant sur ton code : pourquoi utilises-tu un doctype HTML 3.2 ? Smiley eek
salut à tous ,

C'est pas obsolète ...


<script language="JavaScript">

??
Il me semble avoir lu quelque chose là dessus ... (je trouve plus la source ) ... à vérifier !!

par contre si associe ta fonction effacer à un élément , tu peux utiliser le mot-clé 'this' pour faire référence à l'objet courant ...si tu as plusieurs 'input' cette fonction ne sera dépendante du nom récupérer par la méthode get ElementById(...);
Modifié par kzone (14 Feb 2007 - 11:42)
kzone a écrit :
sC'est pas obsolète ...


<script language="JavaScript">

??
Il me semble avoir lu quelque chose là dessus ... (je trouve plus la source )
Euh... Le W3C ? Smiley langue Il faut en effet utiliser
<script type="text/javascript">
Le doctype est totalement secondaire ici, c'est juste généré par mon bon vieux Arachnophilia années 90 que j'utilise pour coder mon html. Pour mes pages récentes je mets un doctype uptodate, c'est sûr !

Donc, le problème reste entier pour le moment... Je peux le généraliser. Si quelqu'un sait comment forcer l'effacement des champs de formulaires (un équivalent de la commande <input type="reset">) au rechargement en passant par l'historique du navigateur (ou le bouton Back). Un truc qui marcherait à tout coup sur IE comme sur FF ?

Le JS que je propose ici a été trouvé sur Internet... après pas mal d'heures de surf... Utilité : une "propreté" du fonctionnement, je dirais, je trouve que ça le fait mieux que le formulaire soit vide au rechargement, que plein.

C'est aussi pour désinciter le recliquage pour rigoler (c'est moins rigolo quand le formulaire est vide et qu'il faut se le retaper). Si quelqu'un veut me conseiller des mesures de validation (genre questions faciles ou mot aléatoire en image tordue (captchac), pour valider le formulaire pour un form2mail, C'EST PAS LA PEINE, je SAIS ! Smiley ravi Je travaille dessus aussi. La vidange du formulaire viendrait en plus ou complément, comme vous voulez.

Merci pour celui qu'aura la soluss.
Modérateur
Salut,

Le doctype n'a rien de secondaire... Il indique à quelles règles se reportent ta page... De même, la validité envers ce doctype n'est pas non plus optionnelle et ne s'opère pas après coup tout simplement parce que le comportement qu'adopte le navigateur peut être différent en fonction de la validité de ton document.

Par ailleurs, je trouve ce mécanisme d'effacement peu judicieux... Lorsqu'on clique dans le champ, je me contente de sélectionner la valeur qui s'y trouve. Ca permet, en cas de correction de ne pas avoir forcémment à tout retaper et si c'est le cas, il n'y a qu'une touche à presser pour voir le texte disparaître... et s'amuser à tenter de faire disparaître cette mémorisation (que j'assimilerais à de l'aide)... hum... Smiley sweatdrop Franchement, sommes-nous là pour aider l'utilisateur ou pour l'enquiquiner ? Les formulaires posent déjà bien souvent des problèmes de compréhension et de navigation, pourquoi tentes-tu de rajouter une difficulté supplémentaire ? Smiley cligne
Modifié par koala64 (14 Feb 2007 - 14:29)
Bonjour
le rafraîchissment sous FF 'est correct que si on appuie sur "shift" en même temps que sur "actualiser" sinon FF garde en mémoire les valeurs des différents champs
Merci coucou de cette subtile précision sur le fonctionnement de FF.
Je vais encore chercher... et je vous tiendrai éventuellement au courant.
Modérateur
Quel est l'avantage de cette méthode ?

Si tu as un long formulaire qui se divise sur plusieurs pages, que tu mets 6, 7 minutes à remplir la première page le temps de trouver les infos nécessaires, que tu passes sur la seconde page et là, pas de bol, tu t'aperçois que tu as fait une erreur, tu trouves ça propre que de tout effacer dès lors que tu retournes sur la première page ?

Si maintenant, ton formulaire n'est que sur une seule page, que l'utilisateur poste sa réponse mais qu'un de ses champs ne passe pas la validation, c'est propre que de lui dire de tout recommencer plutôt que de corriger le strict nécessaire ?

a écrit :
je vous tiendrai éventuellement au courant.
Eventuellement ?! Quel est le principe d'un forum de discussion ?
koala64 a écrit :

je vous tiendrai éventuellement au courant.
Eventuellement ?! Quel est le principe d'un forum de discussion ?

Take it easy koala ! En ces temps d'anglicisation de tout... dorjee est assurément lui aussi anglicisant et utilise donc certainement éventuellement pour eventually (= en finale actually !) !
Administrateur
Bonjour,

Smiley jap ça va mieux en le disant Smiley lol On est un peu susceptibles sur le sujet vu les douzaines d'égoïstes qui ne se donnent pas cette peine. De voir le mot "éventuellement" ça fait *tilt* Smiley hum Smiley bawling

Bonne continuation Smiley cligne
Felipe
Ah oui, j'avais pas fait attention au doctype.

Si j'ai bien compris, c'est à cause de la fonctionnalité instant-back ?
Et en jouant sur la date de péremption de la page via les balise meta ?
J'avais dit que je reviendrai si je trouvais qu'que chose... En fait, la question du back sur un formulaire ne se pose plus pour moi car j'ai réussi à utiliser un système avec captcha (vous savez le code en image qu'il faut recopier pour valider le formulaire).

Vous trouverez les scripts php sur ce forum :

http://www.webmaster-hub.com/index.php?showtopic=29494

En première page récupérer l'ensemble des scripts de gestion du captcha avec le lien vers http://www.cryptographp.com/

puis récupérer (copier-coller) le script de contact.php

enfin, aller à la page 4 de cette série de posts pour voir les améliorations à apporter à contact.php et comment intégrer autant de champs de formulaire que l'on veut.

Donc pour moi, plus de pb Smiley biggrin