2012-01-17 14 views
11

मेरे पास एक ऐसा फॉर्म है जिसे मैं पेज लोड के बाद सबमिट करने की कोशिश कर रहा हूं और 5 सेकंड बीत चुके हैं .. मैंने सेटटाइमआउट की कोशिश की है लेकिन यह काम नहीं कर रहा है .. क्या कोई सुझाव दे सकता है कि यह क्यों होगा मामला हो, मैं साइट पर jQuery है, लेकिन देरी() काम करना आरंभ कर सके या तोऑटो 5 सेकंड के बाद फॉर्म सबमिट करें

<form action="" name="cartCheckout" id="cartCheckout" method="post"> 
<input type="hidden" name="action" value="checkout" /> 
<input type="hidden" name="save" value="1" /> 
<input type="hidden" name="orderID" value="<?php echo $GLOBALS['CHECKOUT_ORDERID']; ?>" /> 

<div class="itembox" id="step4box"> 
    <div id="progress"> 
     <ul> 
     <li>Your Cart</li> 
     <li>Your Details</li> 
     <li class="current">Payment</li> 
     <li>Confirmation</li> 
     </ul> 
    </div> 
<div id="words" class="gothbold">Please wait while we we redirect you to<br />Paypal for a secure payment method.</div> 

<a class="redirect" href="javascript:void(0)" title="Proceed to Paypal" onClick="document.cartCheckout.submit();"><span>If you aren't redirected in 5 seconds click here</span></a><br /> 

<a class="cancel" href="javascript:void(0)" title="Return to details" onClick="jQuery('#step4box').hide();jQuery('#step2box').show();"><span>Cancel</span></a>  
</div> 
<script type="text/javascript"> 
    window.onload=function(){ 
     window.setTimeout(document.cartCheckout.submit(), 5000); 
    }; 
</script> 
</form>  

किसी भी मदद बहुत सराहना की जाएगी, अग्रिम धन्यवाद

संपादित करें:

यह करने के लिए एक के माध्यम से बदल @Alex, @ user824294 का संयोजन और यह प्रश्न: How Can I create A 5 second Countdown timer with jquery that ends with a login popup?। अब उलटी गिनती की महान कार्यक्षमता के साथ काम कर रहा है। धन्यवाद दोस्तों!

window.onload=function(){ 
    var counter = 5; 
    var interval = setInterval(function() { 
     counter--; 
     $("#seconds").text(counter); 
     if (counter == 0) { 
      redirect(); 
      clearInterval(interval); 
     } 
    }, 1000); 

}; 

function redirect() { 
    document.checkout_paypal.submit(); 
} 

उत्तर

10

इसके बजाय फ़ंक्शन का संदर्भ पास करें।

window.onload=function(){ 
    window.setTimeout(document.cartCheckout.submit.bind(document.cartCheckout), 5000); 
}; 

... या ...

window.onload=function(){ 
    window.setTimeout(function() { document.cartCheckout.submit(); }, 5000); 
}; 

आप वर्तमान में फ़ंक्शन को निष्पादित कर रहे हैं, और फिर setTimeout() करने के लिए अपनी वापसी मान गुजर।

इसके अलावा, यदि आप बिल्कुल 5 सेकंड के करीब निष्पादित करना चाहते हैं, तो आपको setInterval() या रिकर्सिव setTimeout() और +new Date की जांच करनी होगी।

+0

यह काम नहीं करता! सबमिट सबमिट फ़ंक्शन को गलत 'इस' के साथ बुलाया जाता है। http://jsfiddle.net/C8FcX/ क्रोम आउटपुट: 'अवैध आमंत्रण'। आपको यह सुनिश्चित करने के लिए 'फ़ंक्शन() {...} 'के साथ लपेटने की आवश्यकता है कि सबमिट सही संदर्भ के साथ कहा जाता है, या आप' Function.bind' –

+0

@JuanMendes का उपयोग कर सकते हैं: मैंने सोचा कि ऐसा मामला हो सकता है। – alex

1

कोशिश यह बजाय कर रही है:

window.onload=function(){ 
    window.setTimeout("redirect()", 5000); 
    // OR 
    window.setTimeout(function() { redirect(); }, 5000); 
}; 

function redirect() { 
    document.cartCheckout.submit(); 
} 
5

आप यह वास्तव में आसान है, यह लोगों की कोशिश कर सकते हैं:

<form name="xyz"...> 
... 
<script type="text/javascript"> 
<!-- 
    var wait=setTimeout("document.xyz.submit();",5000); 
//--> 
</script> 
</form> 
+0

हाय, StackOverflow में योगदान के लिए धन्यवाद। जिस प्रश्न का आप उत्तर दे रहे हैं वह पुराना है और पहले से ही उत्तर दिया गया है - यदि आप अधिक दबाव वाले प्रश्नों के लिए भी अपना प्रयास दे सकते हैं तो हम खुश होंगे। – Mifeet

+0

इसके अलावा, आपका समाधान सभी ब्राउज़रों में काम नहीं करता है - यह [देखें] [http://stackoverflow.com/questions/859806/does-javascript-in-the-html-body-execute-when-encountered) – Mifeet

संबंधित मुद्दे