2009-08-12 16 views
75

मैंने पृष्ठों के एक समूह के माध्यम से खोज की है, लेकिन मेरी समस्या नहीं मिल रही है, इसलिए मुझे एक पोस्ट करना पड़ा।फॉर्म रीडायरेक्ट को रोकें या सबमिट पर रीफ्रेश करें?

मेरे पास एक ऐसा फॉर्म है जिसमें सबमिट बटन है, और सबमिट किए जाने पर मैं इसे रीफ्रेश या रीडायरेक्ट नहीं करना चाहता हूं। मैं सिर्फ एक समारोह करने के लिए jQuery चाहता हूँ।

यहाँ रूप है:

<form id="contactForm"> 
    <fieldset> 
     <label for="Name">Name</label> 
     <input id="contactName" type="text" /> 
    </fieldset> 

    <fieldset> 
     <label for="Email">Email</label> 
     <input id="contactEmail" type="text" /> 
    </fieldset> 

    <fieldset class="noHeight"> 
     <textarea id="contactMessage" cols="20"></textarea> 
     <input id="contactSend" class="submit" type="submit" onclick="sendContactForm()" /> 
    </fieldset> 
</form>   
<small id="messageSent">Your message has been sent.</small> 

और यहाँ jQuery है:

function sendContactForm(){ 
    $("#messageSent").slideDown("slow"); 
    setTimeout('$("#messageSent").slideUp();$("#contactForm").slideUp("slow")', 2000); 
} 

मैं के साथ और फार्म पर एक कार्रवाई तत्व के बिना की कोशिश की है, लेकिन पता है कि मैं क्या 'नहीं है मैं गलत कर रहा हूँ क्या मुझे नाराज है और अधिक है कि मैं एक उदाहरण है कि यह पूरी तरह से करता है: Example Page

आप मेरी समस्या रहते हैं, गोटो stormink.net (मेरी साइट) को देखने के लिए और साइडबार जहां लिखा है कि बाहर की जाँच करना चाहते हैं "मुझे और ईमेल भेजें "और" आरएसएस सदस्यता "। दोनों रूप हैं जो मैं इसे काम करने के लिए प्राप्त करने की कोशिश कर रहा हूं।

उत्तर

156

बस submit घटना पर फ़ॉर्म जमा संभाल, और झूठे वापसी:

<input class="submit" type="submit" value="Send" /> 
+7

एक आकर्षण की तरह काम किया! और कुछ भी तेजी से! मुझे इस साइट से प्यार है! आपको बहुत बहुत धन्यवाद। –

+2

मुझे वह पल याद है जो मैंने सीखा है कि सबमिट करने से सबमिट करने के लिए कोई भी झूठी वापसी कर सकता है, वह क्षण भी था जब मैंने वास्तव में जावास्क्रिप्ट/डीओएम सिस्टम को पसंद करना शुरू कर दिया था। – Imagist

+0

प्रतिभा! धन्यवाद! – Roman

11

ऐसा लगता है कि आप return false खो रहे हैं।

16

यहाँ:

$('#contactForm').submit(function() { 
sendContactForm(); 
return false; 
}); 

आप सबमिट बटन पर किसी भी अधिक ऑनक्लिक ईवेंट की जरूरत नहीं है

function submitClick(e) 
{ 
    e.preventDefault(); 
    $("#messageSent").slideDown("slow"); 
    setTimeout('$("#messageSent").slideUp(); 
    $("#contactForm").slideUp("slow")', 2000); 
} 

$(document).ready(function() { 
    $('#contactSend').click(submitClick); 
}); 

ऑनक्लिक ईवेंट का उपयोग करने के बजाय, आप 'क्लिक' ईवेंट एच को बाध्य करेंगे सबमिट बटन पर jQuery का उपयोग करके एंडलर (या जो भी बटन), जो सबमिट करेगा, कॉलबैक के रूप में क्लिक करें। हम ईवेंट को preventDefault पर कॉल करने के लिए कॉलबैक में पास करते हैं, जो कि फॉर्म सबमिट करने से क्लिक को रोक देगा।

+0

$ ('# संपर्क भेजें')।क्लिक करें (submitClick (ई)); यह मुझे कहता है कि 'ई' परिभाषित नहीं किया गया है ..:/ –

+3

'$ ('# संपर्क भेजें') होना चाहिए। (Function (e) {submitClick (e)});' या '$ ('# contactSend ')। क्लिक करें (सबमिटक्लिक करें); सरल समाधान के लिए ' – Aaron

3

एक वैकल्पिक समाधान फॉर्म टैग का उपयोग नहीं करना होगा और jquery के माध्यम से सबमिट बटन पर क्लिक ईवेंट को संभालना होगा। इस तरह कोई पेज रीफ्रेश नहीं होगा लेकिन साथ ही साथ डाउनसाइड भी होगा जो सबमिशन के लिए "एंटर" बटन काम नहीं करेगा और मोबाइल पर भी आपको एक बटन नहीं मिलेगा (कुछ मोबाइल में एक शैली)। तो फॉर्म टैग का उपयोग करने के लिए चिपके रहें और स्वीकृत उत्तर का उपयोग करें।

9

अपने फार्म के खुलने वाला टैग में, सेट एक कार्रवाई तो की तरह विशेषता:

<form id="contactForm" action="#"> 
+1

+1। लेकिन दुर्भाग्यवश यह पृष्ठ अभी भी पहली बार रीफ्रेश करेगा जब उपयोगकर्ता प्रवेश करेगा। आस-पास एक बुरा काम 'myForm.submit();' जितनी जल्दी हो सके कॉल करना होगा, लेकिन फिर आप पृष्ठ को दो बार लोड कर रहे हैं। – cyclingLinguist

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