2010-01-29 17 views
5

में बैक बटन का उपयोग करते समय फॉर्म सबमिट बटन अक्षम रहता है, मैं आकस्मिक बार-बार क्लिक करने से रोकने के लिए क्लिक किए जाने के बाद सबमिट फ़ॉर्म बटन को अक्षम करने के लिए कुछ jquery का उपयोग कर रहा हूं। फ़ायरफ़ॉक्स को छोड़कर यह सभी ब्राउज़रों में ठीक काम करता है। फ़ायरफ़ॉक्स में यदि सबमिट बटन अक्षम करने के बाद उपयोगकर्ता किसी पृष्ठ पर वापस जाने के लिए ब्राउज़र बैक बटन का उपयोग करता है, तो सबमिट बटन अभी भी अक्षम है। क्या इस समस्या का कोई हल है?फ़ायरफ़ॉक्स

+1

आप अपने कोड पोस्ट कर सकते हैं? – ryanulit

+1

एक खाली अनलोड हैंडलर जोड़ें। इस संबंधित प्रश्न में कारण पर चर्चा की गई है: [क्रॉस-ब्राउज़र ऑनलोड ईवेंट और बैक बटन] (http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-back-button/201406) – user240515

उत्तर

0

यदि किसी ब्राउज़र में कैशिंग अक्षम है, तो पृष्ठ को फिर से लोड किया जाएगा जैसे कुछ भी नहीं हुआ था (कोई बटन क्लिक नहीं किया गया था)।

यदि आप ग्राहक पक्ष चाहते हैं, तो आप कुकी का उपयोग कर सकते हैं।

अब, यदि आपके पास सर्वर साइड टेक्नोलॉजी (PHP/Rails) है, तो आप मान को चर चर में डाल सकते हैं।

4
$(document).ready(function() { 
    $('input[type=submit]', this).attr('disabled', false); 

    $('#myform').submit(function(){ 
     $('input[type=submit]', this).attr('disabled', true); 
    });  

}); 

jQuery का उपयोग करके, यह ब्राउज़र पर बैक-बटन का उपयोग करने पर बटन को अक्षम नहीं करेगा। एफएफ 3.5 पर परीक्षण किया।

+0

दरअसल यह सही नहीं है - $ (दस्तावेज़) .ready() वापस बटन दबाए जाने पर आग नहीं होगी; न ही कोई इनलाइन स्क्रिप्ट होगी। Window.onpageshow ईवेंट का उपयोग करना सबसे अच्छा है, हालांकि यदि आपको आईई 10 या उससे नीचे का समर्थन करने की आवश्यकता है तो आप भाग्य से बाहर हैं। अधिक जानकारी यहां: https://stackoverflow.com/questions/2638292/after-travelling-back-in-firefox-history-javascript-wont-run/2639165#2639165 – Chris

+0

उपरोक्त मेरी टिप्पणी में एक छोटा सा अनुपूरक: यह लागू होता है केवल आधुनिक ब्राउज़रों के लिए, जो पूरे पृष्ठ को कैश करेगा (स्क्रिप्टिंग द्वारा किए गए किसी भी संपादन सहित)। इसलिए, ऊपर दिए गए एरिक का जवाब संभवतः पोस्ट होने पर सही होगा - और यह अभी भी आईई 10 और नीचे काम करेगा - लेकिन अगर आपको 2017 में या बाद में यह जवाब मिल रहा है तो सावधान रहें। – Chris

8

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

<form autocomplete="off"> 
    <input type="submit" /> 
</form> 
+0

यह मेरे लिए विचित्र है कि फ़ायरफ़ॉक्स "स्वत: पूर्ण" के बटन हिस्से की स्थिति को मानता है ... लेकिन वैसे भी, स्वच्छ समाधान के लिए धन्यवाद। बीटीडब्लू, यह न केवल ब्राउज़र के साथ वापस जाने पर होता है, लेकिन जब अजाक्स के माध्यम से फॉर्म के नए संस्करण में स्वैपिंग होती है। – lawrence

+0

मैं कहूंगा कि यह उत्तर स्वीकार किया जाना चाहिए। –

+1

मेरे लिए काम नहीं करता है (फ़ायरफ़ॉक्स 54) –