IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Onsubmit et redirection sous Chrome


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Par défaut Onsubmit et redirection sous Chrome
    Bonjour à tous,

    Tout d'abord je tiens à préciser que je ne suis pas un crack en JS mais que j'ai cherché partout une solution sans succès, j'espère que vous pourrez m'aider.

    Je m'explique. J'ai sur mon site un formulaire tout ce qu'il y a de plus classique. La page de traitement est externe à mon site et je n'y ai pas accès.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post" id="formulaire" name="formulaire" action="http://www.siteexterne.com/pagedetraitement" onsubmit="return validForm();return false;" target="_blank">

    Ce que j'aimerais, et que j'ai réussi à faire fonctionné sour FF, IE (oui même IE); mais pas Chrome est la chose suivante :

    Lorsque le formulaire est posté depuis "monsite.com/formulaire"
    ► un nouvel onglet s'ouvre via le target="_blank" contenant la page de traitement externe "siteexterne.com/pagedetraitement";
    ► simultanément ma page "monsite.com/formulaire" se recharge pour afficher "monsite.com/merci.html"

    Le script de vérification des données du formulaire appelé dans le onsubmit est le suivant, c'est ici que je donne l'instruction de recharger sur "monsite.com/merci.html"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    var REG_MAIL = /^[\w-\.]{2,}@[\w-]{1,}\./;
    var REG_PHONE = /^(0)[0-9]{9}\./;
    var REG_DATE = /^[0-9]{8}\./;
     
    function validForm() {
    	if(document.formulaire.firstname.value == "") {
    		alert(firstnameErrorMessage);
    		document.formulaire.firstname.focus();
    		return false;
    	}
     
    ......
     
    	if(document.formulaire.description.value == "") {
    		alert(descriptionErrorMessage);
    		document.formulaire.description.focus();
    		return false;
    	}
     
    	document.location.href="http://monsite.com/merci/";
      	return true;
    }
    Donc en l'état ça marche sous FF et IE.
    Par contre sous Chrome :
    - la vérification du formulaire est bien effectuée
    - la page de traitement s'ouvre
    - MAIS la page ou est située le formulaire ne se recharge pas sur "merci".

    En fouillant sur internet, j'ai vu qu'il fallait que je mette ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.event.returnValue = false;
    avant mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.location.href="http://monsite.com/merci/";
    return true;
    En faisant ça, ma page se recharge, mais mon onglet ne s'ouvre plus...

    ------------------------------

    Bref, peut être y a-t-il une toute autre façon de faire à laquelle je n'ai pas pensé ? Je vous remercie par avance !

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Ton code est pourtant claire et je ne comprends pas qu'il est pu marcher sur certain navigateur

    le déroulement est le suivant
    1. L'utilisateur clique sur le bouton de validation
    2. La fonction submit s'exécute
    3. Elle arrive sur l'instruction document.location.href="http://monsite.com/merci/";
    4. Le navigateur reçois l'ordre de recharger la page
    5. la fonction exécute return true;
    6. La main est rendu au navigateur
    7. Le navigateur exécute la redirection et tue le contexte courant

    le formulaire ne peut être soumis

    deux solution tu définis un customEvent afterSubmit

    dans le gestionnaire de cet événement tu fais la redirection
    et là ou tu faisait la redirection tu fais un dispatchEvent.
    le déroulement est le suivant
    1. L'utilisateur clique sur le bouton de validation
    2. La fonction submit s'exécute
    3. Elle arrive sur l'instruction dispatchEvent
    4. la fonction exécute return true;
    5. La main est rendu au navigateur
    6. le navigateur exécute le submit du formulaire
    7. l'événement afterSubmit est capté par le navigateur
    8. le gestionnaire de afterSubmit document.location.href="http://monsite.com/merci/";
    9. Le navigateur reprend la main est fait la redirection
    10. Le navigateur exécute la redirection et tue le contexte courant



    La deuxième solution est plus simple mais moins propre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.setTimeout(function() {document.location.href="http://monsite.com/merci/";}, 2000);
    ainsi le navigateur attends 2 secondes avant de faire la redirection.

    A+JYT

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Par défaut Merci beaucoup !
    Impeccable, c'est exactement ce que je voulais.
    J'ai opté pour la deuxième solution mais la première doit aussi fonctionner à n'en pas douter !

    Tu m’ôtes un grosse épine du pied !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction de redirection ne fonctionne pas sous Chrome
    Par Azuken dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 22/02/2012, 11h13
  2. fonction C et redirections (>,<) sous windows
    Par hector2 dans le forum Windows
    Réponses: 4
    Dernier message: 04/10/2007, 22h34
  3. redirection sous domaine
    Par maximenet dans le forum Apache
    Réponses: 2
    Dernier message: 06/07/2007, 17h59
  4. Redirection sous firefox
    Par renaud26 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/05/2007, 12h21
  5. Effectuer une redirection sous Free
    Par nerick dans le forum Langage
    Réponses: 1
    Dernier message: 11/11/2006, 17h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo