2013-10-21 7 views
66

का उपयोग कर सकता हूं, यदि एक मोडल खुला है तो मुझे केवल सत्यापन करने की आवश्यकता है, क्योंकि अगर मैं इसे खोलता हूं, और फिर मैं इसे बंद करता हूं, और मैं बटन दबाता हूं मोडल खोलता है यह काम नहीं करता है क्योंकि यह jquery सत्यापन बना रहा है, लेकिन यह नहीं दिखा रहा है क्योंकि मोडल को खारिज कर दिया गया था।बूटस्ट्रैप मोडल खुला है या नहीं, तो मैं jquery मान्य

तो यदि मैं मोडल खुला है तो मैं एक jquery विज्ञापन करना चाहता हूं ताकि मैं मान्य कर सकूं, क्या यह संभव है?

<script> 
$(document).ready(function(){ 

var validator =$('#form1').validate(
{ 
    ignore: "", 
    rules: { 

usu_login: { 
    required: true 
}, 
usu_password: { 
    required: true 
}, 
usu_email: { 
    required: true 
}, 
usu_nombre1: { 
    required: true 
}, 
usu_apellido1: { 
    required: true 
}, 
usu_fecha_nac: { 
    required: true 
}, 
usu_cedula: { 
    required: true 
}, 
usu_telefono1: { 
    required: true 
}, 
rol_id: { 
    required: true 
}, 
dependencia_id: { 
    required: true 
}, 
    }, 

    highlight: function(element) { 
$(element).closest('.grupo').addClass('has-error'); 
     if($(".tab-content").find("div.tab-pane.active:has(div.has-error)").length == 0) 
     { 
      $(".tab-content").find("div.tab-pane:hidden:has(div.has-error)").each(function(index, tab) 
      { 
       var id = $(tab).attr("id"); 

       $('a[href="#' + id + '"]').tab('show'); 
      }); 
     } 
    }, 
    unhighlight: function(element) { 
$(element).closest('.grupo').removeClass('has-error'); 
    } 
}); 

}); // end document.ready 

</script> 

उत्तर

122

बंद कर दिया रेस स्थिति @GregPettit उल्लेख से बचने के लिए उसे निकाल देता

$('#myModal').hasClass('in'); 

बूटस्ट्रैप in वर्ग कहते हैं, एक का उपयोग कर सकते हैं:

($("element").data('bs.modal') || {})._isShown // Bootstrap 4 
($("element").data('bs.modal') || {}).isShown  // Bootstrap <= 3 

जैसा कि Twitter Bootstrap Modal - IsShown में चर्चा की गई है।

जब मोडल अभी तक खोला नहीं है, .data('bs.modal') रिटर्न undefined, इसलिए || {} - जो isShown कर देगा (falsy) मूल्य undefined। यदि आप सख्तता में हैं तो ($("element").data('bs.modal') || {isShown: false}).isShown

+1

इसके साथ कोई समस्या है, यदि मोडल खुला नहीं है, तो आपको $ ("element") से 'अपरिभाषित' मिलेगा। डेटा ('bs.modal') – Flezcano

+0

धन्यवाद @ फ्लेज़कैनो - उत्तर अब इस के लिए खाता है । चीयर्स –

+0

._isShown मेरे लिए काम किया है, मैं बूटस्ट्रैप 4 अल्फा –

53

आप उपयोग कर सकते हैं जब मोडल खुला है और जब

+2

यह बदल जाता है फीका विकल्प और तेज क्लिक के साथ थोड़ा नाजुक होना या अजाक्स कॉल के माध्यम से एक मोडल ट्रिगर करना। फीका पर समय देरी दौड़ की स्थिति बना सकती है। फिर भी, सामग्री स्थिर होने पर इसमें हुक करने का एक उपयोगी तरीका है और मॉडल केवल उपयोगकर्ता इंटरैक्शन के दौरान पॉप अप करता है! –

+0

बूटस्ट्रैप मोडल पर रेस स्थिति से बचने का सबसे सुरक्षित, निश्चित तरीका है 'show.bs.modal' या 'hidden.bs.modal' ईवेंट की सदस्यता लेना। इस तरह, जब आपका इवेंट कोड नियंत्रण प्राप्त होता है, तो आप निश्चित हैं कि संवाद एक स्पर्शपूर्ण राज्य में नहीं है। –

+0

क्या यह बूटस्ट्रैप संस्करण 4 में मान्य है? –

23

आप सीधे jQuery का उपयोग भी कर सकते हैं। यदि मोडल से पहले नहीं दिखाया गया है

$('#myModal').is(':visible'); 
+0

जब उत्तर सरल होता है। अगर AJAX का उपयोग करते हैं, तो मैं इसे पहले से उपयोग करता हूं और झूठी जांचता हूं और वापस लौटाता हूं, इस तरह यह सर्वर पर कई कॉल भी रोकता है। धन्यवाद! – eaglei22

3
$("element").data('bs.modal').isShown 

काम नहीं करेगा। आप एक अतिरिक्त शर्त जोड़ने की आवश्यकता होगी:

$("element").data('bs.modal') 

तो जवाब खाता पहली उपस्थिति को ध्यान में रखकर:

if ($("element").data('bs.modal') && $("element").data('bs.modal').isShown){ 
... 
} 
-1

बूटस्ट्रैप-modal.js v2.2.0 पर:

($('element').data('modal') || {}).isShown 
+0

जवाब दिया गया, मूल क्रेडिट [स्वीकृत उत्तर] (https://stackoverflow.com/a/21341587/1159167) – Ricardo

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