2009-05-22 23 views
98

मेरे पास एक सबमिट फ़ॉर्म है और जब उपयोगकर्ता फॉर्म सबमिट करता है तो उसे एक नई विंडो खोलना है ताकि मैं इसे एनालिटिक्स पर ट्रैक कर सकूं।फॉर्म पर एक नई विंडो कैसे खोलें

<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> 

उत्तर

216

जावास्क्रिप्ट के लिए कोई ज़रूरत नहीं, आप बस अपने प्रपत्र टैग में एक target="_blank" विशेषता जोड़ने के लिए है:

यहाँ कोड मैं का उपयोग कर रहा है।

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

यदि आप लक्ष्य = _blank जोड़ते हैं, तो आपको ऑनक्लिक ईवेंट की आवश्यकता नहीं है। – WhyNotHugo

+0

यह कई कारणों से अभी भी गलत है। अधिकांश उद्धरण गुम हो गए हैं, और यह किसी भी कारण से फॉर्म पर क्लिक किया जाता है, न केवल सबमिट पर। –

+4

इस पोस्ट पर ठोकर खाई! फ़ॉर्म टैग में लक्ष्य = "_ खाली" जोड़ना एक नई विंडो खोलने की आवश्यकता की मेरी समस्या हल हो गई! – kaitlynjanine

-3

window.open सभी ब्राउज़र में काम नहीं करता है, यह गूगल और आप सही संवाद प्रकार का पता लगाने का एक तरीका मिल जाएगा।

इसके अलावा, जब उपयोगकर्ता सबमिट करता है तो केवल उस पर इनपुट कॉल पर ऑनक्लिक कॉल को स्थानांतरित करें।

+1

ऑनक्लिक गलत है। फिर, यदि उपयोगकर्ता इसे क्लिक करता है, लेकिन रिलीज़ होने से पहले चले जाते हैं, तो यह अभी भी आग लग जाएगा। –

3

आपके द्वारा दिए गए कोड को सही करने की आवश्यकता है। प्रपत्र टैग में आप संलग्न करने के लिए onClick दोहरे उद्धरण में अधिक महत्व देते हैं है:

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

तुम भी ख्याल है कि window.open के पहले पैरामीटर भी उद्धरण का उपयोग कर संलग्न किया जाना चाहिए लेने के लिए की जरूरत है।

7

onclick उस क्रिया को संलग्न करने के लिए सबसे अच्छी घटना नहीं हो सकती है। जब भी कोई भी फॉर्म में कहीं भी क्लिक करता है, तो यह विंडो खुल जाएगा।

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

मुझे इसका समाधान भी मिला। इस पृष्ठ ने आज मेरी मदद की, इसलिए मैं यहां भी पुनः पोस्ट कर रहा हूं।

/** This is the script that will redraw current screen and submit to paypal. */ 
echo '<script>'."\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 '</script>'."\n" ; 

/** This form will be opened in a new window called PayPalPayment. */ 
echo '<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" name="paypal_form" method="post" target="PayPalPayment">'."\n" ; 
echo '<input type="hidden" name="cmd" value="_s-xclick">'."\n" ; 
echo '<input type="hidden" name="custom" value="'.$transaction_start.'">'."\n" ; 
echo '<input type="hidden" name="hosted_button_id" value="'.$single_product->hosted_button_id.'">'."\n" ; 
echo '<table>'."\n" ; 
echo ' <tr>'."\n"; 
echo '  <td><input type="hidden" name="'.$single_product->hide_name_a.'" value="'.$single_product->hide_value_a.'">Local</td>'."\n" ; 
echo ' </tr>'."\n" ; 
echo ' <tr>'."\n" ; 
echo '  <td>'."\n" ; 
echo '  <input type="hidden" name="'.$single_product->hide_name_b.'" value="'.$single_product->hide_value_b.'" />'.$single_product->short_desc.' $'.$adj_price.' USD'."\n" ; 
       // <select name="os0"> 
       //  <option value="1 Day">1 Day $1.55 USD</option> 
       //  <option value="All Day">All Day $7.50 USD</option> 
       //  <option value="3 Day">3 Day $23.00 USD</option> 
       //  <option value="31 Day">31 Day $107.00 USD</option> 
       // </select> 
echo '  </td>'."\n" ; 
echo ' </tr>'."\n" ; 
echo '</table>'."\n" ; 
echo '<input type="hidden" name="currency_code" value="USD">'."\n" ; 
echo '</form>'."\n" ; 

/** This form will redraw the current page for approval. */ 
echo '<form action="ProductApprove.php" name="server_responder" method="post" target="_top">'."\n" ; 
echo '<input type="hidden" name="trans" value="'.$transaction_start.'">'."\n" ; 
echo '<input type="hidden" name="prod_id" value="'.$this->product_id.'">'."\n" ; 
echo '</form>'."\n" ; 

/** No form here just an input and a button. onClick will handle all the forms */ 
echo '<input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" alt="PayPal - The safer, easier way to pay online!" onclick="serverNotifySelected()">'."\n" ; 
echo '<img alt="" border="0" src="https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">'."\n" ; 

उपरोक्त कोड एक बटन के लिए कोड है। आप बटन दबाते हैं और यह वर्तमान स्क्रीन को खरीद से प्री-स्वीकृति में वापस ले जाएगा। साथ ही यह एक नई खिड़की और हाथ खोलता है जो नई विंडो पेपैल पर जाती है।

+3

ओपी ने कहा है कि वे कोड के लिए नए हैं - आईएमओ पेपैल बटन से संबंधित एक पूर्ण भार (बेहद स्वरूपित) कोड पोस्ट करने से उन्हें – Mike

2

मैं आम तौर पर एक नए टैब/विंडो में किसी बाहरी लिंक को खोलने के लिए वैश्विक रूप से एक छोटा jQuery स्निपेट का उपयोग करता हूं। मैं अपने ही साइट के लिए एक फार्म के लिए चयनकर्ता जोड़ दिया है और यह ठीक अब तक काम करता है:

// URL target 
    $('a[href*="//"]:not([href*="'+ location.hostname +'"]),form[action*="//"]:not([href*="'+ location.hostname +'"]').attr('target','_blank'); 
12

डेटाबेस डेटा का प्रिंट-आउट प्रदर्शित करने के लिए एक पॉप-अप विंडो का उपयोग करता है एक वेब आधारित डेटाबेस आवेदन में, इस हमारी जरूरतों (क्रोम 48 में परीक्षण) के लिए काफी अच्छी तरह से काम किया ...

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

चाल onsubmit हैंडलर में window.open कॉल में दूसरा तर्क के साथ <form> टैग पर target विशेषता मिलान करने के लिए है।

+0

की मदद नहीं करेगा, यह विंडो आकार नियंत्रण देता है। अति उत्कृष्ट। – Chalky

+0

इस पृष्ठ में सबसे अच्छा समाधान, इसका परीक्षण किया और पूर्णता के लिए काम करता है। –

+0

यह वही है जो मैं प्रस्तुत करने पर एक अलग विंडो में पीडीएफ उत्पन्न करते समय देख रहा था। – jrob007

3

एक समान प्रभाव के लिए के रूप में target विशेषता, आप भी input[type="submit]" या button[type="submit"] की formtarget विशेषता का उपयोग कर सकते हैं।

MDN से:

... यह विशेषता एक नाम या कीवर्ड जो दर्शाता है कि प्रतिक्रिया है कि फार्म जमा करने के बाद प्राप्त होता है प्रदर्शित करने के लिए है। यह एक ब्राउज़िंग संदर्भ (उदाहरण के लिए, टैब, विंडो, या इनलाइन फ्रेम) के लिए, या कीवर्ड का नाम है।यदि यह विशेषता निर्दिष्ट है, तो यह तत्वों के फॉर्म स्वामी के लक्ष्य विशेषता को ओवरराइड करता है। निम्नलिखित कीवर्ड का विशेष अर्थ है:

  • _self: उसी ब्राउज़िंग संदर्भ में प्रतिक्रिया को वर्तमान के रूप में लोड करें। यह मान डिफ़ॉल्ट है यदि विशेषता निर्दिष्ट नहीं है।
  • _blank: प्रतिक्रिया को एक नए अनामित ब्राउज़िंग संदर्भ में लोड करें।
  • _ मूल: वर्तमान के मूल ब्राउज़िंग संदर्भ में प्रतिक्रिया लोड करें। यदि कोई अभिभावक नहीं है, तो यह विकल्प स्वयं जैसा ही व्यवहार करता है।
  • _top: शीर्ष-स्तरीय ब्राउज़िंग संदर्भ में प्रतिक्रिया लोड करें (यानी, ब्राउज़िंग संदर्भ जो वर्तमान के पूर्वजों का है, और उसके माता-पिता नहीं हैं)। यदि कोई अभिभावक नहीं है, तो यह विकल्प स्वयं जैसा ही व्यवहार करता है।
संबंधित मुद्दे