Submit a Form to a New Window
There are certain times when it's important to open a link in a new window. The short and effective way of achieving that is adding the 'target="_blank"' attribute/value to your anchor tag. But what about when you want form submission to have the same effect -- a new window? Luckily, you can do the same thing:
The XHTML
<form action="http://othersite.com" method="post" target="_blank">
<-- form fields here -->
</form>
Of course, the Target-Blank haters may not approve of this method, but it's quick and always works.
![5 Awesome New Mozilla Technologies You’ve Never Heard Of]()
My trip to Mozilla Summit 2013 was incredible. I've spent so much time focusing on my project that I had lost sight of all of the great work Mozillians were putting out. MozSummit provided the perfect reminder of how brilliant my colleagues are and how much...
![From Webcam to Animated GIF: the Secret Behind chat.meatspac.es!]()
My team mate Edna Piranha is not only an awesome hacker; she's also a fantastic philosopher! Communication and online interactions is a subject that has kept her mind busy for a long time, and it has also resulted in a bunch of interesting experimental projects...
![Create a CSS Flipping Animation]()
CSS animations are a lot of fun; the beauty of them is that through many simple properties, you can create anything from an elegant fade in to a WTF-Pixar-would-be-proud effect. One CSS effect somewhere in between is the CSS flip effect, whereby there's...
![Basic AJAX Requests Using MooTools 1.2]()
AJAX has become a huge part of the modern web and that wont change in the foreseeable future. MooTools has made AJAX so simple that a rookie developer can get their dynamic pages working in no time.
Step 1: The XHTML
Here we define two links...
Iv never need to do this, and actually never really thought about it, but im glad to see that, that would work if i ever needed to do it :D Cheers David.
I’m afraid that I’m a Target-Blank hater, but fortunately, not so hardcore that I refuse to use it when it’s the only thing that works. I wasn’t aware that you could do it with forms, will add that to my arsenal, thanks David!
A word of warning: target is not a valid attribute in XHTML.
So while it works, it isn’t specified in the standard anymore.
@Rexxars – that’s why I’m against it
What about making something like this and adding it to the form:
this is JQuery
$('a[rel="external"]').click( function() { window.open( $(this).attr('href') ); return false; });Yeah, I would also do something like:
function submitForm(formId) { newDialog = window.open('about:blank', "_form"); document.forms[formId].target='_form'; document.forms[formId].submit(); return false; }I didn’t test it at the moment, but I guess it should work ;)
Doh, no idea why, but my post didn’t work :( Anyway, I would try something like that: http://nopaste.ch/62b4538ef17e6da.html – but I didn’t test it, yet…
@All: I understand that “target” is no longer considered valid, but it’s short and effective. It also works when the user has JS disabled.
@Rich: I don’t know if it’s possible to apply that to an external window.
Maybe i wasn’t clear in my comment, but your saying something like this would not work?
@david
$(’a[rel="external"]‘).click( function() { window.open( $(this).attr(’href’) ); return false; });obviously placing the jquery code in the dom. and i removed the open and close from that form tag because it wasnt showing up in the preview.
@Rich: Yep, I know where you’re going with that, but I’m not sure if the javascript will pass the POST form information on.
excellent timing; i needed this at work today. cheers!
I know that target isnt valid anymore, but can someone educate me as to what i would use instead? and maybe i could join the darkside too?
@david gotcha. i think your right. I just tried it a couple of different ways with no results. could be something interesting to think about though. although i only tried for about 10 min..lol
Good post though.
That’s a cool trick. I’m a little bit of a fledgling at website development and tried to use target=”blank” and I was pretty damn happy to find out that all I needed was an underscore! Thanks alot David!
Try this: onsubmit=”this.target=’_blank'”
A JQuery wich tests “rel” attribute will fail in validation too, because this attribute isn’t on the list for the element “form”: http://www.w3.org/TR/html401/interact/forms.html#h-17.3
Must be a way to assign the target to a class using JQuery.
Hope it helps
I want a smaller new window instead of opening a new tab,
so I’ve used this for a website, the only problem is that it doesn’t seem to work in IE 9
Javascript:
function sendme() { window.open("","myNewWin","width=500,height=300,toolbar=0"); var a = window.setTimeout("document.form1.submit();",500); }/** This is the script that will redraw current screen and submit to paypal. */ echo ''."\n" ; echo 'function serverNotifySelected()'."\n" ; echo '{'."\n" ; echo ' window.open(\'\', \'PayPalPayment\');'."\n" ; echo ' document.forms[\'paypal_form\'].submit();'."\n" ; echo ' document.forms[\'server_responder\'].submit();'."\n" ; echo '}'."\n" ; echo ''."\n" ; /** This form will be opened in a new window called PayPalPayment. */ echo ''."\n" ; echo ''."\n" ; echo ''."\n" ; echo 'hosted_button_id.'">'."\n" ; echo ''."\n" ; echo ' '."\n"; echo ' hide_name_a.'" value="'.$single_product->hide_value_a.'">Local'."\n" ; echo ' '."\n" ; echo ' '."\n" ; echo ' '."\n" ; echo ' hide_name_b.'" value="'.$single_product->hide_value_b.'" />'.$single_product->short_desc.' $'.$adj_price.' USD'."\n" ; // // 1 Day $1.55 USD // All Day $7.50 USD // 3 Day $23.00 USD // 31 Day $107.00 USD // echo ' '."\n" ; echo ' '."\n" ; echo ''."\n" ; echo ''."\n" ; echo ''."\n" ; /** This form will redraw the current page for approval. */ echo ''."\n" ; echo ''."\n" ; echo 'product_id.'">'."\n" ; echo ''."\n" ; /** No form here just an input and a button. onClick will handle all the forms */ echo ''."\n" ; echo ''."\n" ;It worked for me. My WP theme was sent back as I was not using
_blanktarget. Thanks for sharing.I can’t make it work with Safari on macOS.
I am submitting through javascript though:
$(someformselector).submit();