2013-01-31 15 views
6

फ़ॉर्म सबमिट कर रहा है, तो मैं उपयोगकर्ता को चेतावनी देने के लिए निम्नलिखित जावास्क्रिप्ट कोड का उपयोग कर रहा हूं यदि वह फॉर्म सबमिट किए बिना किसी अन्य पृष्ठ पर रीडायरेक्ट करने का प्रयास करता है।पुष्टि करें कि उपयोगकर्ता

window.onbeforeunload = function() { 
    return 'Are you sure that you want to leave this page?'; 
}; 

यह मेरी समस्या ठीक है.पर काम कर रहा है जब उपयोगकर्ता प्रपत्र बटन की पुष्टि बॉक्स प्रकट हो जाएगा प्रस्तुत का उपयोग कर प्रस्तुत करने के लिए कोशिश कर रहा है। मैं पुष्टि नहीं करना चाहता कि उपयोगकर्ता फॉर्म सबमिट कर रहा है, अन्यथा मैं पुष्टि पूछना चाहता हूं। यह कैसे संभव है?

+1

कृपया जाँच 'onbeforeunload':

$('form').submit(function() { ... ... can_leave = true; }); 

और अपने onbeforeunload() हैंडलर के अंदर इस राशि:

बस एक वैश्विक चर

var can_leave = false; 
अपने फार्म पर

है। मुझे लगता है कि यह क्रोम या फ़ायरफ़ॉक्स – Ashwin

+0

में काम नहीं करता है क्योंकि मुझे लगता है कि यह क्रोम और फ़ायरफ़ॉक्स दोनों के साथ ठीक काम कर रहा है। लेकिन दोनों अलग-अलग प्रतिक्रिया दे रहे हैं। मेरे मामले में फ़ायरफ़ॉक्स पूछ रहा है "यह पृष्ठ आपको यह पुष्टि करने के लिए कह रहा है कि आप छोड़ना चाहते हैं - आपके द्वारा दर्ज किया गया डेटा सहेजा नहीं जा सकता है।" लेकिन क्रोम की पुष्टि करने के लिए पूछ रहा है "क्या आप पृष्ठ छोड़ना चाहते हैं क्या आप वाकई इस पृष्ठ को छोड़ना चाहते हैं?" – shihabudheen

उत्तर

8

एक राज्य चर बनाए रखें। जब उपयोगकर्ता सबमिट बटन पर क्लिक करें userSubmitted=True पर राज्य सेट करें;
राज्य चर में एक वैश्विक चर या छिपे हुए नियंत्रण शामिल हो सकता है। क्रॉस ब्राउज़र के लिए onbeforunload संगतता के लिए पार की जांच:

var userSubmitted=false; 

$('form').submit(function() { 
userSubmitted = true; 
}); 

तो इस तरह

window.onbeforeunload = function() { 
    if(!userSubmitted) 
     return 'Are you sure that you want to leave this page?'; 
}; 

पी एस की जाँच करें।

2

सरल।

window.onbeforeunload = function() { 
if (!can_leave) return 'Are you sure that you want to leave this page?'; 
}; 
संबंधित मुद्दे