153 votes

Comment ouvrir une nouvelle fenêtre à l'envoi du formulaire

J'ai un formulaire de soumission et je veux qu'il ouvre une nouvelle fenêtre lorsque les utilisateurs soumettent le formulaire afin que je puisse le suivre dans les statistiques.

Voici le code que j'utilise :

<form action="http://URL at mailchimp subscriber URL.com" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" onclick=window.open(google.html,'','scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,status=no');>
    <label for="name">Your Name</label><input type="text" value="" name="FNAME" class="required" id="mce-FNAME">
    <br/>
    <br/>
    <label for="email">Your Email </label><input type="text" value="" name="EMAIL" class="required email" id="mce-EMAIL">
    <br/>
    <br/>
    <input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="submit">
</form>
</div>

315voto

Konstantinos Points 5321

Pas besoin de Javascript, il suffit d'ajouter une balise target="_blank" dans votre balise de formulaire.

<form target="_blank" action="http://example.com"
      method="post" id="mc-embedded-subscribe-form"
      name="mc-embedded-subscribe-form" class="validate"
>

40voto

Awerealis Points 96

Dans une application Web de base de données qui utilise une fenêtre contextuelle pour afficher les impressions des données de la base, cela a fonctionné suffisamment bien pour nos besoins (testé dans Chrome 48) :

<form method="post" 
      target="print_popup" 
      action="/myFormProcessorInNewWindow.aspx"
      onsubmit="window.open('about:blank','print_popup','width=1000,height=800');">

L'astuce consiste à faire correspondre le target de l'attribut <form> avec le deuxième argument de la balise window.open dans l'appel onsubmit manipulateur.

13voto

alxs Points 369

Pour un effet similaire à celui de la forme target vous pouvez également utiliser l'attribut formtarget l'attribut de input[type="submit]" o button[type="submit"] .

De MDN :

...cet attribut est un nom ou un mot clé indiquant où afficher la réponse reçue après soumission du formulaire. Il s'agit du nom ou du mot clé d'un contexte de navigation (par exemple, un onglet, une fenêtre ou un cadre en ligne). Si cet attribut est spécifié, il remplace l'attribut target du propriétaire du formulaire des éléments. Les mots-clés suivants ont des significations particulières :

  • Lui-même : Charger la réponse dans le même contexte de navigation que le contexte actuel. Cette valeur est la valeur par défaut si l'attribut n'est pas spécifié.
  • _blank : Charger la réponse dans un nouveau contexte de navigation sans nom.
  • _parent : Charge la réponse dans le contexte de navigation parent du contexte actuel. S'il n'y a pas de parent, cette option se comporte de la même manière que _self.
  • _top : Charger la réponse dans le contexte de navigation de niveau supérieur (c'est-à-dire le contexte de navigation qui est un ancêtre du contexte actuel et qui n'a pas de parent). S'il n'y a pas de parent, cette option se comporte de la même manière que _self.

9voto

Grant Wagner Points 14085

onclick n'est peut-être pas le meilleur événement auquel rattacher cette action. Chaque fois que quelqu'un clique n'importe où dans le formulaire, la fenêtre s'ouvre.

<form action="..." ...
    onsubmit="window.open('google.html', '_blank', 'scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,status=no');return true;">

4voto

Shell RS Points 625

Le code que vous avez donné, doit être corrigé. Dans la balise form, vous devez mettre la valeur de l'attribut onClick entre guillemets :

"window.open('google.htm','','scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,status=no');"

Vous devez également veiller à ce que le premier paramètre de l'option window.open doit également être encadrée par des guillemets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X