2012-12-30 13 views
6

मेरे पास एक टेक्स्टरेरा है जो ajax के साथ सबमिट की गई है जो उपयोगकर्ता को चेतावनी देने के लिए ऑनबेरनलोड का उपयोग करती है कि यदि वे ब्राउज़र बंद करने का प्रयास करते हैं तो उन्होंने टेक्स्टरेरा सबमिट नहीं किया है। समस्या यह है कि मुझे ajax की सफलता के भीतर किसी भी तरह से पहले से लोड करने की आवश्यकता है ताकि सबमिट किया जा सके कि उपयोगकर्ता ने फ़ॉर्म को सफलतापूर्वक सबमिट कर दिया है। कोड की एक पंक्ति के साथ ऑनबेरनलोड को साफ़ करने का कोई तरीका है, एक स्पष्ट टाइमआउट या स्पष्ट अंतराल के समान? मैं वर्तमान में ऑनबॉर्नलोड कोड दिखाऊंगा, भले ही मुझे नहीं लगता कि यह बहुत मायने रखता है b/c मैं इसे साफ़ करने के लिए एक अलग फ़ंक्शन ढूंढ रहा हूं। कृपया कोई ढांचा नहीं है। धन्यवाद।साफ़ Onbeforeunload

समारोह कॉल

unsavedChangesWarning(); 

onbeforeunload समारोह

function unsavedChangesWarning(){ 
    window.onbeforeunload = function(){ 
     return 'If you close this page you will lose your stride update!'; 
    }; 
} 

उत्तर

13

window.onbeforeunload = null यह साफ हो जाएगा। उपयोगकर्ता को कहीं भी रीडायरेक्ट करने का प्रयास करने से पहले बस इसे जोड़ें।

+0

gracias! उसने ऐसा किया! – gmustudent

1

jQuery के लिए यह लगता है कि:

$(window).on('beforeunload', function (e) 
{ 
    return 'Please dont leave me'; 
}); 

$(window).off('beforeunload'); 

मैं वास्तव में इसके बाद के संस्करण समाधान का उपयोग किया जाएगा, तो उपयोगकर्ता सत्र समाप्त हो जाता है एक साफ ताज़ा अनुमति देने के लिए। हालांकि आपके उपयोग के मामले में मुझे लगता है कि यह अनलोड से पहले सशर्त बनाने के लिए और अधिक समझ में आता है।

$('input, textarea, select').change(function() 
{ 
    $(this).parents('form').addClass('dirty'); 
}); 
window.onbeforeunload = function() 
{ 
    if ($('form.dirty').length) 
    { 
    var confirmationMessage = 'You have edited but not saved a form on this page.'; 

    (e || window.event).returnValue = confirmationMessage; //Gecko + IE 
    return confirmationMessage; //Gecko + Webkit, Safari, Chrome etc. 
    } 
}; 
संबंधित मुद्दे