2009-09-01 10 views
10

के बाहर क्लिक पर बंद करें को रोकें मैं अपने मोडल विंडोज़ के लिए Fancybox प्लगइन का उपयोग कर रहा हूं। ऐसा लगता है कि मेरे द्वारा उपयोग किए जाने वाले विकल्पों में कोई फर्क नहीं पड़ता कि मैं fancybox मोडल विंडो को बंद होने से रोक नहीं सकता जब उपयोगकर्ता fancybox मोडल विंडो (ग्रेड आउट क्षेत्र) के बाहर क्लिक करता है।jquery fancybox - fancybox

क्या उपयोगकर्ता को एक्स या बटन पर क्लिक करने के लिए मजबूर करने का कोई तरीका है जो मैं करीबी घटना को ट्रिगर करता हूं? ऐसा लगता है कि यह आसान होना चाहिए इसलिए मुझे उम्मीद है कि मैं सिर्फ गलत उदाहरण पढ़ रहा हूं।

मैंने hideOnContentClick: false की कोशिश की है लेकिन यह मेरे लिए काम नहीं कर रहा है। कोई विचार?

+1

यह आपके द्वारा दिए गए साइट लिंक पर काम करता है, आपको कोई कोड मिला है? – waqasahmed

+0

ठीक है, लेकिन यदि आप मोडल विंडो के बाहर क्लिक करते हैं तो सभी उदाहरणों पर यह बंद हो जाता है। मैं इसे तब तक खुला रखना चाहता हूं जब तक उपयोगकर्ता एक्स पर क्लिक न करे (कहीं और नहीं)। – Mike

उत्तर

4

इसके लिए कोई विकल्प नहीं है। आपको स्रोत कोड बदलना होगा।

jquery.fancybox-1.2.1.js में आप _finish विधि में बाहर टिप्पणी (या हटाना) लाइन 341 की जरूरत है:

//$("#fancy_overlay, #fancy_close").bind("click", $.fn.fancybox.close); 
+0

उत्कृष्ट। मैंने लाइन को टिप्पणी की और जोड़ा: $ ("# fancy_close) .bind (" क्लिक करें ", $ .fn.fancybox.close); यह वही करता है जो मुझे चाहिए। धन्यवाद! – Mike

+1

इसमें एक विकल्प है नीचे का जवाब cool_dev, कोड संपादन समस्याओं को जन्म दे जाएगा जब आप अपडेट करना है, अपने परिवर्तन हो जाएगा अधिक से लिखा –

+0

कैसे आप फ़ाइल को पढ़ने की थी। वहाँ एक विधि न्यूनतम किया गया जे एस कन्वर्ट करने के लिए है? –

1

बस अपने समारोह में निम्नलिखित पंक्ति जोड़ने के लिए, आप की जरूरत नहीं है jquery.fancybox-1.2.6.js

callbackOnStart : function() {$("#fancy_overlay").bind("click","null");}, 
+0

हम केवल में से एक पर इस व्यवहार करना चाहता था स्रोतों को बदलने के हमारे फैंसी बक्से एक विकल्प नहीं थे, धन्यवाद! – spilliton

+0

अभी पता चला है कि यह Google क्रोम पर काम नहीं करता है, अभी तक यह पता नहीं लगा है कि – spilliton

7

मैं fancybox 1.3.1 का उपयोग कर रहा है, तो आप केवल बटन पर क्लिक करके मोडल बॉक्स को बंद करने के लिए मजबूर उपयोगकर्ता चाहता हूँ अगर में कुछ भी बदलने के लिए, आप में निर्दिष्ट कर सकते हैं विन्यास:

<script type="text/javascript"> 
    $(document).ready(function() { 
    $("#your_link").fancybox({ 
     'hideOnOverlayClick':false, 
     'hideOnContentClick':false 
    }); 
    }); 
</script> 
+0

बहुत बहुत धन्यवाद! फैंक्सबॉक्स का उपयोग करके काम किया 1.3.4 –

+1

डॉन ' संस्करण 2.1.4 के लिए fancybox 2.0+ – Josh1billion

11
<script type="text/javascript"> 
    $(document).ready(function() { 
    $("#your_link").fancybox({ 
     'hideOnOverlayClick':false, 
     'hideOnContentClick':false 
    }); 
    }); 
</script>        
3

मैं एक ही "मुद्दा" में भाग गया। यह मेरे लिए काम किया:

$("#fancybox-overlay").unbind(); 
+1

में काम नहीं करते हैं, वे इसे $ ("। fancybox-ov में बदल सकते हैं erlay ") निकल()।; – loQ

23
jQuery(".lightbox").fancybox({ 
     helpers  : { 
      overlay : { 
       speedIn : 0, 
       speedOut : 300, 
       opacity : 0.8, 
       css  : { 
        cursor : 'default' 
       }, 
       closeClick: false 
      } 
     }, 
    }); 
+2

यह वास्तव में मूल प्रश्न का उत्तर नहीं देता है, जो fancybox v1.2.1 का उपयोग करता है। V1.2.6 और v1.3.4 के बीच के संस्करणों के लिए @ cool_dev का उत्तर देखें। Fancybox 2.x के लिए http://stackoverflow.com/a/8404587/1055987 – JFK

+0

मेरे लिए काम करता है! कोड के लिए बहुत उपयोगी धन्यवाद! fancybox जांच के नवीनतम संस्करण के लिए –

3

उपरोक्त में से कोई मेरे लिए काम किया है, इसलिए मैं सिर्फ fancybox के नवीनतम संस्करण के लिए एक सरल सा लिखा था।

function load(parameters) { 
    $('.fancybox-outer').after('<a href="javascript:;" onclick="javascript:{parent.$.fancybox.close();}" class="fancybox-item fancybox-close" title="Close"></a>'); 
} 

$(document).ready(function() { 
    $(".various").fancybox({ 
     modal: true, 
     afterLoad: load 
    }); 
}); 

आशा इस मदद करता है :)

+1

http://stackoverflow.com/a/8404587/1055987 – JFK

2

$("#fancybox-overlay").unbind() समाधान @Gabriel द्वारा इस प्रश्न के लिए दिए गए काम करता है को छोड़कर मैं fancybox करने के लिए इसे बाध्य करने के लिए यह अपनी सामग्री लोड करता है के बाद की जरूरत है, और मैं तुरंत निकल नहीं कर सका। जो कोई भी इस मुद्दे में चलाता है के लिए, निम्न कोड मेरे लिए समस्या हल:

$('.fancybox').fancybox({'afterLoad' : function() { 
    setTimeout(function() { $("#fancybox-overlay").unbind(); }, 400);} 
}); 

400 मि.से देरी मेरे लिए काम मिल गया। यह 300ms के साथ काम किया लेकिन मैं संभावना नहीं लेना चाहता था।

5

यदि आप Fancybox 1.2.6 (जैसे कि मैं एक प्रोजेक्ट पर हूं) का उपयोग कर रहा हूं, तो मुझे विकल्पऑनऑवरलेक्लिक विकल्प मिला। आप इसे गलत पर सेट कर सकते हैं (उदा। HideOnOverlayClick: false)।

स्कॉट डॉउडिंग द्वारा सुझाव givn के आधार पर कोड को संशोधित करने के दौरान मुझे यह विकल्प मिला।

0

मुझे उपरोक्त सभी उत्तरों के संयोजन का उपयोग करना पड़ा, क्योंकि उनमें से सभी में त्रुटियां शामिल हैं। निश्चित रूप से, स्रोत कोड का कोई संपादन आवश्यक नहीं है।

मेरे मामले में, मैं बॉक्स को बंद करने वाले ओवरले क्लिक को अक्षम करना चाहता था क्योंकि मेरे पास प्रश्नों की प्रगति थी जो फेंसीबॉक्स के अंदर क्रमशः प्रदर्शित की जाएगी, इसलिए मैं नहीं चाहता था कि उपयोगकर्ता गलती से ओवरले पर क्लिक करके अपनी प्रगति खो दें , लेकिन पेज पर कहीं और उस कार्यक्षमता को रखना चाहता था।

उपयोग यह इसे अक्षम करने के लिए:

$(".fancybox-overlay").unbind(); 

उपयोग इस उसे पुन: सक्षम करने के लिए:

$(".fancybox-overlay").bind("click", $.fancybox.close); 
0

बस निम्नलिखित कोड का उपयोग करें:

$(document).ready(function() { 
    $("a#Mypopup").fancybox({ 
     "hideOnOverlayClick" : false, // prevents closing clicking OUTSIE fancybox 
     "hideOnContentClick" : false, // prevents closing clicking INSIDE fancybox 
     "enableEscapeButton" : false // prevents closing pressing ESCAPE key 
    }); 
    $("a#Mypopup").trigger('click'); 
}); 

<a id="Mypopup" href="images/popup.png"><img alt="Mypopup" src="images/popup.png" /></a> 
2

सेट closeClick पैरामीटर के लिए झूठी अपने समारोह के अंदर:

$(".video").click(function() { 
    $.fancybox({ 
     width: 640, 
     height: 385, 
     helpers: { 
      overlay: { 
       closeClick: false 
      } 
     } 
    }); 

    return false; 
}); 
+1

चिल्लाओ मत करें, विशेष रूप से में नहीं ** बोल्ड ** :-) – kleopatra

1

आप कल्पना बॉक्स को रोकने के इन स्थापित करने

'showCloseButton'=>false, // hide close button from fancybox 
'hideOnOverlayClick'=>false, // outside of fancybox click disabled 
'enableEscapeButton'=>false, // disable close on escape key press 

लगाने से बंद करने के लिए कर सकते हैं लिंक

http://www.fancybox.net/api

6

निम्नलिखित इस मुद्दे के लिए से स्थापित करने fancybox मिलता है, इस तरह से प्रयास करें

$("YourElement").fancybox({ 
helpers: { 
     overlay: { closeClick: false } //Disable click outside event 
    } 

उम्मीद है कि यह मदद करता है।

+0

यह वास्तव में मूल प्रश्न, उत्तर देता नहीं है जो fancybox v1.2.1 का उपयोग करता है। V1.2.6 और v1.3.4 के बीच के संस्करणों के लिए @ cool_dev का उत्तर देखें। धन्यवाद मैं अपने ज्ञान में सुधार होगा: fancybox 2.x के लिए http://stackoverflow.com/a/8404587/1055987 – JFK

+0

@JKF देखना – David

-1

आप गलत पर ओवरले पर डिफ़ॉल्ट closeClick सेट कर सकते हैं। संस्करण 2.1.5 में मेरे लिए काम किया है।

$.fancybox.helpers.overlay.defaults.closeClick=false; 
संबंधित मुद्दे