Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/08/2011, 13h18   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 52
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 52
Points : 11
Points : 11
Par défaut Associer history.back() avec une autre fonction ?

Bonjour à tous,

Je pense que ce n'est pas possible, mais je pose la question quand même !

Dans mon body onload, j'ai une fonction pret() qui met une div en display:none (v. ci-dessous ce que c'est que cette div).

Puis, j'ai un form avec onsubmit="msg_attente();"
Cette fonction est chargée d'afficher une div avec un message d'attente pendant le traitement du formulaire (upload et màj BDD), c'est une div à 100x100% et z-index 1000 afin que l'utilisateur ne puisse pas cliquer ailleurs dans la page pendant le traitement.

Le pb, c'est que si l'utilisateur a fait une erreur de saisie dans le form, il reçoit un msg d'erreur. J'aimerais pouvoir lui offrir la possibilité de retourner en arrière avec un bouton retour et onclick=history.back(), afin qu'il puisse retrouver ce qu'il avait saisi dans les différents champs du form sans avoir le retaper.

Or, avec history.back(), je reviens purement et simplement en arrière, sans rechargement de la page, et après l'exécution onsubmit de la fonction msg_attente() (qui donc avait produit son effet). Du coup, ce retour arrière m'affiche ma page avec ma div d'attente à 100% et z-index 1000, et pas moyen bien sûr d'accéder aux divers éléments de cette page !!!

Alors je me demandais si en même temps qu'history.back, je pouvais interagir sur cette div d'attente ?

J'ai essayé avec mon bouton retour de mettre onclick="history.back();prêt();" mais la fonction pret(), qui est censée mettre ma div en dispay:none, n'a ici aucun effet...

Voilà...
Merci d'avance pour votre aide ou vos suggestions !
@+
Marmotton76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 10h54   #2
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 451
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 451
Points : 2 150
Points : 2 150
Je crois que c'est une très mauvaise idée que de procéder comme ça.

La première raison est que le history.back() n'a pas le même effet sur tous les navigateurs (et qu'il peut même être configurable sur le navigateur) : certains navigateurs rechargent la page lors du "back()", d'autres non.

La seconde raison c'est que javascript peut être désactivé.

Le plus propre c'est que, si le formulaire a une erreur, tu réaffiches le formulaire (et non pas une page d'erreur) avec les erreurs trouvées au dessus des champs en erreur. Tu auras au préalable pris soin de remplir les champs par la valeur rentrée par l'utilisateur.

Une autre solution est de détecter les erreurs à la volée lorsque les champs sont remplis et de faire faire la validation serveur par de l'AJAX.

Quoi qu'il en soit, utiliser le history.back() sur les formulaires c'est mal et dangereux.
Loceka est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h29.


 
 
 
 
Partenaires

Hébergement Web