बूटस्ट्रैप: मोडल में एक और मोडल खोलें


95

इसलिए, मैं इस कोड का उपयोग एक चालू मोडल विंडो में दूसरी मोडल विंडो खोलने के लिए कर रहा हूं:

<a onclick=\"$('#login').modal('hide');$('#lost').modal('show');\" href='#'>Click</a>

क्या होता है, कि 500ms के लिए स्क्रॉलबार डुप्लिकेट होगा। मुझे लगता है क्योंकि वर्तमान मोडल अभी भी लुप्त होती जा रही है। हालाँकि यह बहुत ही अन-स्मूथ और हकलाने वाला लगता है।

मैं इस मुद्दे को हल करने के लिए किसी भी सुझाव की सराहना करूंगा।

इसके अलावा, जिस तरह से एक onclick- घटना अव्यवसायिक में यह निर्माण है?

मैं बूटस्ट्रैप संस्करण 3.0 के साथ काम कर रहा हूं।

संपादित करें: मुझे लगता है कि यह एक मॉडल से बाहर लुप्त होती के समय को कम करने के लिए neccesary है। यह कैसे हो सकता है?


3
एक काम का उदाहरण bootply.com/lvKQA2AM28
CrandellWS

जवाबों:


86

data-dismiss वर्तमान मोडल विंडो बल को बंद कर देता है

data-togglehrefइसके अंदर की सामग्री के साथ एक नया मोडल खोलता है

<a data-dismiss="modal" data-toggle="modal" href="#lost">Click</a>

या

<a data-dismiss="modal" onclick="call the new div here">Click</a>

अगर यह काम करता है तो हमें बताएं।


धन्यवाद, यह काम करता है और "ऑनक्लिक" का उपयोग करने से बचता है। लेकिन एनिमेटोमॉम अभी भी एक सेकंड के लिए स्क्रॉलबार को दोगुना करता है।
एलेक्सियोवे

@ user2829128 क्या data-dismissकरता है। यह वर्तमान विंडो को बंद कर देता है और एक नया खोल देता है। आप में अपने कोड पोस्ट कर सकते हैं bootplyया jsfiddle?
ज्येष्ठक

14
यदि लंबाई लंबी है तो स्क्रॉल दूसरे मोडल पर काम नहीं करेगा।
गिरलाड़ी

यहाँ बूटस्ट्रैप v4 के साथ भी। जब मैं पहले मॉन्डल पर बटन पर क्लिक करता हूं, तो यह एनोथेर मोडल को खोलता है, दूसरा मोडल शरीर के स्क्रॉल के साथ दिखाता है। समस्याएँ वर्ग में हैं। शरीर के लिए शरीर-खुला। जब हम क्लिक करते हैं तो यह हटा दिया जाता है और फिर से जोड़ा नहीं जाता है।
fdrv

7
.modal { overflow-y: auto }BS4 स्क्रॉलिंग समस्या हल करता है।
Riki137

84

मेरा समाधान निचले मोडल को बंद नहीं करता है, लेकिन वास्तव में इसके शीर्ष पर ढेर होता है। यह स्क्रॉलिंग व्यवहार को सही ढंग से संरक्षित करता है। बूटस्ट्रैप 3 में परीक्षण किया गया है। उम्मीद के अनुसार स्टैक करने के लिए, आपको उन्हें अपने एचटीएमएल मार्कअप में सबसे कम से उच्चतम तक ऑर्डर करने की आवश्यकता है।

$(document).on('hidden.bs.modal', function (event) {
  if ($('.modal:visible').length) {
    $('body').addClass('modal-open');
  }
});

UPDATE: जब आपने मोडल को स्टैक्ड किया है, तो सभी बैकड्रॉप्स सबसे निचले मोडल के नीचे दिखाई देते हैं। आप निम्नलिखित सीएसएस जोड़कर इसे ठीक कर सकते हैं:

.modal-backdrop {
    visibility: hidden !important;
}
.modal.in {
    background-color: rgba(0,0,0,0.5);
}

यह सबसे ऊपरी दृश्यमान मोडल के नीचे एक मोडल बैकड्रॉप का रूप देगा। इस तरह से यह आपके निचले तौर-तरीकों को कम कर देता है।


2
पृष्ठ मार्कअप में बाद की वस्तुओं में स्वाभाविक रूप से उच्च जेड-इंडेक्स होता है और पहले मार्कअप में दिखाई देने वाली वस्तुओं के ऊपर स्टैक होगा। जब तक आप एक स्पष्ट z- इंडेक्स सेट नहीं करते।
एच डॉग

1
@ एच डॉग: वास्तव में मुझे क्या चाहिए :) सही काम करता है। धन्यवाद!
टोबियास कोलर

2
सचमुच महान !! जब भी किसी ने इस के लिए एक प्लगइन का उपयोग करने का सुझाव दिया, तो मैं फ़्लिप कर गया ... बस एक सरल समस्या के लिए एक सरल समाधान चाहता था और आप वहां जाऊं ... चीयर्स!
Fr0zenFyr

2
बहुत-बहुत धन्यवाद, आपकी मदद के लिए। आपका समाधान मेरी समस्या का समाधान था, जब मैं एक ही समय में दो मॉडल्स का उपयोग करता हूं !!!!!
लेवोन

3
जावास्क्रिप्ट बूटस्ट्रैप 4 के लिए काम किया, हालांकि, सीएसएस ने नहीं किया। इसके बजाय मैंने पृष्ठभूमि को छुपाया और फिर जोड़ा गया .modal: {content: "" के बाद; प्रदर्शन क्षेत्र; पृष्ठभूमि: आरजीबीए (0,0,0,। 5); स्थिति: निश्चित; शीर्ष: 0; नीचे: 0; चौड़ाई: 100%; z- इंडेक्स: -1; }
जेसन जी।

28

चालू मोडल विंडो में दूसरी मोडल विंडो खोलने के लिए,
आप बूटस्ट्रैप-मोडल का उपयोग कर सकते हैं

बूटस्ट्रैप-मोडल डेमो


इस बूटस्ट्रैप-मोडल का उपयोग करके पृष्ठभूमि सामग्री को दाईं ओर शिफ्ट किया जाता है।
ब्रायन

@ ब्रायन - यहाँ देखें: stackoverflow.com/questions/46339063/…
lfkwtz

18

इसे इस्तेमाल करे

<!DOCTYPE html>
<html lang="en">
<head>
  <title></title>
  <meta charset="utf-8">
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</head>
<body>

  <button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#test1">Open Modal 1 </button>



<div id="test1" class="modal fade" role="dialog" style="z-index: 1400;">
  <div class="modal-dialog">
    <!-- Modal content-->
    <div class="modal-content">
      
      <div class="modal-body">
      	<button type="button" class="btn btn-info btn-lg" data-toggle="modal"      data-target="#test2">Open Modal 2</button>
      	
      </div>      
    </div>
  </div>
</div>

<div id="test2" class="modal fade" role="dialog" style="z-index: 1600;">
  <div class="modal-dialog">
    <!-- Modal content-->
    <div class="modal-content">
      
      <div class="modal-body">
      	
        content
      	
      </div>      
    </div>
  </div>
</div>
  

</body>
</html>


1
मेरे लिए असफल .. = (मोडल काम करता है लेकिन यदि 1 मोडल लंबा है कि 1 मोडल के लिए एक स्क्रॉल दिखाई देता है और जब आप दूसरा मोडल खोलते हैं और इसे बंद करते हैं तो पहला मोडल स्क्रॉल काम करने में विफल हो जाता है।
विंसेंट डैपिटॉन

बहुत बहुत धन्यवाद, यह एक महान मदद थी :)
डैनियल

17

आप वास्तव में यह पता लगा सकते हैं कि पुराना मौडल कब कॉल करके बंद हो जाता है hidden.bs.modal:

    $('.yourButton').click(function(e){
        e.preventDefault();

        $('#yourFirstModal')
            .modal('hide')
            .on('hidden.bs.modal', function (e) {
                $('#yourSecondModal').modal('show');

                $(this).off('hidden.bs.modal'); // Remove the 'on' event binding
            });

    });

अधिक जानकारी के लिए: http://getbootstrap.com/javascript/#modals-events


15

2018 के लिए अपडेट - बूटस्ट्रैप 4 का उपयोग करना

मैंने पाया कि अधिकांश उत्तर अनावश्यक jQuery के बहुत से हैं। किसी अन्य मोडल से मोडल खोलने के लिए बस उन घटनाओं का उपयोग करके किया जा सकता है जो बूटस्ट्रैप प्रदान करता हैshow.bs.modal । आप चाहें तो बैकग्राउंड ओवरले को संभालने के लिए कुछ CSS भी ले सकते हैं। यहाँ अन्य परिदृश्यों से 3 खुले मोडल हैं ...

दूसरे मोडल से ओपन मोडल (1st modal open रखें)

<a data-toggle="modal" href="#myModal" class="btn btn-primary">Launch modal</a>

<div class="modal" id="myModal">
        <div class="modal-dialog">
          <div class="modal-content">
            <div class="modal-header">
              <h4 class="modal-title">Modal title</h4>    
              <button type="button" class="close" data-dismiss="modal">×</button>
            </div><div class="container"></div>
            <div class="modal-body">
              ...
              <a data-toggle="modal" href="#myModal2" class="btn btn-primary">Open modal2</a>
            </div>
            <div class="modal-footer">
              <a href="#" data-dismiss="modal" class="btn">Close</a>
            </div>
          </div>
        </div>
</div>
<div class="modal" id="myModal2" data-backdrop="static">
        <div class="modal-dialog">
          <div class="modal-content">
            <div class="modal-header">
              <h4 class="modal-title">2nd Modal title</h4>
              <button type="button" class="close" data-dismiss="modal">×</button>
            </div><div class="container"></div>
            <div class="modal-body">
              ..
            </div>
            <div class="modal-footer">
              <a href="#" data-dismiss="modal" class="btn">Close</a>
              <a href="#" class="btn btn-primary">Save changes</a>
            </div>
          </div>
        </div>
</div>

इस मामले में एक संभावित मुद्दा यह है कि 2 मोडल की पृष्ठभूमि 1 मोडल को छिपाती है। इसे रोकने के लिए, 2 मोडल बनाएं data-backdrop="static", और बैकग्राउंड के z-indexes को ठीक करने के लिए कुछ CSS जोड़ें ...

/* modal backdrop fix */
.modal:nth-of-type(even) {
    z-index: 1052 !important;
}
.modal-backdrop.show:nth-of-type(even) {
    z-index: 1051 !important;
}

https://www.codeply.com/go/NiFzSCukVl


दूसरे मोडल से ओपन मोडल (करीब 1 मोडल)

यह उपरोक्त परिदृश्य के समान है, लेकिन जब से हम 2 ओपन होने पर 1 मोडल बंद कर रहे हैं, बैकग्राउंड सीएसएस फिक्स की कोई आवश्यकता नहीं है। एक साधारण फ़ंक्शन जो 2 मॉडल्स show.bs.modalइवेंट को हैंडल करता है, 1 मोडल बंद कर देता है।

$("#myModal2").on('show.bs.modal', function (e) {
    $("#myModal1").modal("hide");
});

https://www.codeply.com/go/ejaUJ4YANz


दूसरे मोडल के अंदर ओपन मोडल

अंतिम कई मोडल परिदृश्य, 1 मोडल के अंदर दूसरा मोडल खोल रहा है। इस स्थिति में 2 के लिए मार्कअप को 1 के अंदर रखा गया है। कोई अतिरिक्त CSS या jQuery की आवश्यकता नहीं है।

<div class="modal" id="myModal1">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title">Modal title</h4>
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
            </div>
            <div class="container"></div>
            <div class="modal-body">
                ...
                <a data-toggle="modal" href="#myModal2" class="btn btn-primary">Launch modal 2</a>
            </div>
            <div class="modal-footer">
                <a href="#" data-dismiss="modal" class="btn">Close</a>
            </div>
        </div>
    </div>

    <div class="modal" id="myModal2">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h4 class="modal-title">2nd Modal title</h4>
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                </div>
                <div class="container"></div>
                <div class="modal-body">
                    ...
                </div>
                <div class="modal-footer">
                    <a href="#" data-dismiss="modal" class="btn">Close</a>
                    <a href="#" class="btn btn-primary">Save changes</a>
                </div>
            </div>
        </div>
    </div>
</div>

https://www.codeply.com/go/iSbjqubiyn


यह बूटस्ट्रैप 4 में काम नहीं करता है। जब आप दूसरा मोडल बंद करते हैं, तो पहले वाला 1 स्क्रॉल नहीं कर सकता है।
जस्टिन

@ जस्टिन - मुझे ऐसा विशिष्ट परिदृश्य दिखाई नहीं देता है जो इसे प्रदर्शित करता है, और चूंकि स्क्रॉलिंग मूल प्रश्न के दायरे से बाहर है। मेरा सुझाव है कि आप स्क्रॉलिंग समस्या के लिए विशिष्ट कोई दूसरा प्रश्न पूछें या पूछें।
ज़िम्म

nth-of-type ने मेरे लिए काम नहीं किया क्योंकि यह क्लास में नहीं दिखता है। मुझे इसके साथ काम करना .modal-backdrop.show + .modal.show { z-index: 1052 !important; } .modal-backdrop.show + .modal.show + .modal-backdrop.show { z-index: 1051 !important; }
पड़ा

14

मोडल में मोडल:

$('.modal-child').on('show.bs.modal', function () {
    var modalParent = $(this).attr('data-modal-parent');
    $(modalParent).css('opacity', 0);
});
 
$('.modal-child').on('hidden.bs.modal', function () {
    var modalParent = $(this).attr('data-modal-parent');
    $(modalParent).css('opacity', 1);
});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<a href="#myModal" role="button" class="btn btn-primary" data-toggle="modal">Modals in Modal</a>


<div id="myModal" class="modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">
             
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Modal Header</h4>
            </div>
            <div class="modal-body">
                <a href="#myModal1" role="button" class="btn btn-primary" data-toggle="modal">Launch other modal 1</a>
                <a href="#myModal2" role="button" class="btn btn-primary" data-toggle="modal">Launch other modal 2</a>
            </div>

        </div>
    </div>
</div>

<div id="myModal1" class="modal modal-child" data-backdrop-limit="1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-modal-parent="#myModal">
    <div class="modal-dialog">
        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Modal Header 1</h4>
            </div>
            <div class="modal-body">
                <p>Two modal body…1</p>
            </div>
            <div class="modal-footer">
                <button class="btn btn-default" data-dismiss="modal" data-dismiss="modal" aria-hidden="true">Cancel</button>
            </div>

        </div>
    </div>
</div>

<div id="myModal2" class="modal modal-child" data-backdrop-limit="1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-modal-parent="#myModal">
    <div class="modal-dialog">
        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">
                
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Modal Header 2</h4>
            </div>
            <div class="modal-body">
                <p>Modal body…2</p>
            </div>
            <div class="modal-footer">
                <button class="btn btn-default" data-dismiss="modal" data-dismiss="modal" aria-hidden="true">Cancel</button>
            </div>

        </div>
    </div>
</div>


मेरे लिए असफल .. = (मोडल काम करता है लेकिन यदि 1 मोडल लंबा है कि 1 मोडल के लिए एक स्क्रॉल दिखाई देता है और जब आप दूसरा मोडल खोलते हैं और इसे बंद करते हैं तो पहला मोडल स्क्रॉल काम करने में विफल हो जाता है।
विंसेंट डैपिटॉन

ऊपर दिए गए पहले मोडल के स्थान पर स्पोंस मोडल के ऊपर का उदाहरण और न ही शीर्ष पर (पहले वाला अब दिखाई नहीं देता है)।
जैकइन्फाइफ

बहुत अच्छा प्रभाव।
जॉर्ज बी।

आपके समाधान को सेमेटिक यूआई में उपयोग करना कैसे संभव है?
वाहिदसमी

9

एक ऐसे प्रोजेक्ट पर काम करना, जिसमें बहुत से अन्य मॉडल्स और कुछ HTML लोग हैं, जो प्रत्येक बटन के लिए इसे आरंभ करना नहीं जानते हैं। @Gmaggio के समान निष्कर्ष पर पहुंचे, पहले के आसपास लंबा रास्ता तय करने के बाद कृतज्ञतापूर्वक।

संपादित करें: अब जावास्क्रिप्ट के माध्यम से बुलाया मोडल का समर्थन करता है।

संपादित करें: अब एक और मोडल से स्क्रॉलिंग मोडल खोलना काम करता है।

$(document).on('show.bs.modal', function (event) {
    if (!event.relatedTarget) {
        $('.modal').not(event.target).modal('hide');
    };
    if ($(event.relatedTarget).parents('.modal').length > 0) {
        $(event.relatedTarget).parents('.modal').modal('hide');
    };
});

$(document).on('shown.bs.modal', function (event) {
    if ($('body').hasClass('modal-open') == false) {
        $('body').addClass('modal-open');
    };
});

बस सामान्य रूप में मोडल कॉलिंग बटन को रखें, और यदि यह एक मॉडल के अंदर होने के लिए उठाया गया है, तो यह डेटा-लक्ष्य में निर्दिष्ट एक को खोलने से पहले वर्तमान को बंद कर देगा। ध्यान दें कि relatedTargetबूटस्ट्रैप द्वारा प्रदान किया गया है।

मैंने फिडिंग को थोड़ा सुचारू करने के लिए निम्नलिखित को भी जोड़ा: मुझे यकीन है कि हालांकि अधिक किया जा सकता है।

.modal-backdrop.fade + .modal-backdrop.fade {
    transition: opacity 0.40s linear 0s;
}

आपकी समस्या 100% नहीं है, लेकिन दिखाया गया है। बॉडी.modal- ओपन क्लास का प्रबंधन BS v.3.3.5 में छोटी गाड़ी लगती है, एक मोडल को बंद करने के बाद और दूसरा खोलने से यह गायब है और इसलिए बैकग्राउंड को स्क्रॉल करने के बजाय (दूसरा) मोडल है। आपका हुक उस व्यवहार को ठीक कर सकता है।
मैनुएल ने शमिदत

7

ट्विटर डॉक्स का कहना है कि कस्टम कोड आवश्यक है ...

यह कोई अतिरिक्त जावास्क्रिप्ट के साथ काम करता है, हालांकि, कस्टम सीएसएस की अत्यधिक सिफारिश की जाएगी ...

<link href="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<!-- Button trigger modal -->
    <button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#modalOneModal">
      Launch demo modal
    </button> 
            <!-- Modal -->
            <div class="modal fade bg-info" id="modalOneModal" tabindex="-1" role="dialog" aria-labelledby="modalOneLabel" aria-hidden="true">
    
              <div class="modal-dialog">
          
                <div class="modal-content  bg-info">
                  <div class="modal-header btn-info">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                    <h4 class="modal-title" id="modalOneLabel">modalOne</h4>
                  </div>
                  <div id="thismodalOne" class="modal-body bg-info">
                
                
              <!-- Button trigger modal -->
    <button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#twoModalsExample">
      Launch demo modal
    </button>
             
                    <div class="modal fade bg-info" id="twoModalsExample" style="overflow:auto" tabindex="-1" role="dialog" aria-hidden="true">
                <h3>EXAMPLE</h3>
            </div>
                  </div>
                  <div class="modal-footer btn-info" id="woModalFoot">
                    <button type="button" class="btn btn-info" data-dismiss="modal">Close</button>
                  </div>
                </div>
              </div>
            </div>
    <!-- End Form Modals -->


1
यहाँ दूसरा उदाहरण है 2 मोडल को ठीक से प्रारूपित किया जा रहा है bootq.com/qRsvPSrcO5
Zim

1
@Skelly ने z- इंडेक्स में बदलाव किया जैसा आपने सीएसएस में किया था, यह एक अच्छा विचार है ...z-index: 1080 !important;
CrandellWS

4
यदि आप दूसरा मोडल खोलते हैं और बाहर क्लिक करते हैं तो यह बग हो जाएगा। (क्रोम, नवीनतम)
मार्टिन ब्रौन

शायद मैं गलत हूं, लेकिन मेरा मानना ​​है कि डॉक्स का कहना है कि मोडल को मोडल में न रखें ताकि थोड़े आश्चर्यचकित न हों
CrandellWS

7

बूटस्ट्रैप 4 के लिए, @ हेलोरॉय के उत्तर पर विस्तार करने के लिए मैंने निम्नलिखित का उपयोग किया;

var modal_lv = 0 ;
$('body').on('shown.bs.modal', function(e) {
    if ( modal_lv > 0 )
    {
        $('.modal-backdrop:last').css('zIndex',1050+modal_lv) ;
        $(e.target).css('zIndex',1051+modal_lv) ;
    }
    modal_lv++ ;
}).on('hidden.bs.modal', function() {
    if ( modal_lv > 0 )
        modal_lv-- ;
});

उपरोक्त का लाभ यह है कि इसका कोई प्रभाव नहीं होगा जब केवल एक ही मोडल हो, यह केवल गुणकों के लिए किक करता है। दूसरे, यह भविष्य के मॉडल को सुनिश्चित करने के लिए शरीर को संभालने को सौंपता है जो वर्तमान में उत्पन्न नहीं होते हैं, अभी भी इसके लिए तैयार हैं।

अपडेट करें

एक js / css संयुक्त समाधान में जाने से नज़र में सुधार होता है - फीका एनीमेशन पृष्ठभूमि पर काम करना जारी रखता है; -

var modal_lv = 0 ;
$('body').on('show.bs.modal', function(e) {
    if ( modal_lv > 0 )
        $(e.target).css('zIndex',1051+modal_lv) ;
    modal_lv++ ;
}).on('hidden.bs.modal', function() {
    if ( modal_lv > 0 )
        modal_lv-- ;
});

निम्नलिखित सीएसएस के साथ संयुक्त ;;

.modal-backdrop ~ .modal-backdrop
{
    z-index : 1051 ;
}
.modal-backdrop ~ .modal-backdrop ~ .modal-backdrop
{
    z-index : 1052 ;
}
.modal-backdrop ~ .modal-backdrop ~ .modal-backdrop ~ .modal-backdrop
{
    z-index : 1053 ;
}

यह 4 डीप नेस्टेड मॉडल्स को हैंडल करेगा जो कि मेरी आवश्यकता से अधिक है।


यह बूटस्ट्रैप 4 में काम नहीं करता है। जब आप 2 मोडल को बंद करते हैं, तो पहले वाला अब स्क्रॉल नहीं कर सकता है।
जस्टिन

4

इसे इस्तेमाल करे:

// Hide the login modal
$('#login').modal('hide');

// Show the next modal after the fade effect is finished
setTimeout(function(){ $('#lost').modal('show'); }, 500);

यह साधारण हैक मेरे लिए काम करता है।


4

बूटस्ट्रैप 4 का उपयोग करने वाले किसी व्यक्ति के लिए https://jsfiddle.net/helloroy/tmm9juoh/

var modal_lv = 0;
$('.modal').on('shown.bs.modal', function (e) {
    $('.modal-backdrop:last').css('zIndex',1051+modal_lv);
    $(e.currentTarget).css('zIndex',1052+modal_lv);
    modal_lv++
});

$('.modal').on('hidden.bs.modal', function (e) {
    modal_lv--
});
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet"/>

<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modal-a">
  Launch demo modal a
</button>

<div class="modal fade" id="modal-a" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modal-b">
  Launch another demo modal b
</button>
<p class="my-3">
Not good for fade In.
</p>
<p class="my-3">
who help to improve?
</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

<div class="modal fade" id="modal-b" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modal-c">
  Launch another demo modal c
</button>
<p class="my-3">
But good enough for static modal
</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>


<div class="modal" id="modal-c" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
<p class="my-3">That's all.</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>


यह महान है, एकमात्र मुद्दा बचा है जब स्क्रॉल-बार के फिर से दिखने को रोकने के लिए जब सबसे ऊपर वाला मोडल बंद हो जाए
HyperActive

मैं शब्दार्थ यूआई में आपके समाधान का उपयोग कैसे कर सकता हूं?
वाहिदसमी

2

मुझे अपने स्क्रॉल मोडल से भी कुछ परेशानी थी, इसलिए मैंने कुछ इस तरह किया:

  $('.modal').on('shown.bs.modal', function () {
    $('body').addClass('modal-open');
    // BS adds some padding-right to acomodate the scrollbar at right
    $('body').removeAttr('style');
  })

  $(".modal [data-toggle='modal']").click(function(){
    $(this).closest(".modal").modal('hide');
  });

यह किसी भी मोडल व्हिटिन के लिए काम करेगा जो एक मोडल दिखाई देता है। ध्यान दें कि पहला इसका बंद है तो दूसरा दिखाई दे सकता है। बूटस्ट्रैप संरचना में कोई परिवर्तन नहीं।


2

मैं एक साथ एक अलग मार्ग की तरह गया, मैंने उन्हें "डी-नेस्ट" करने का फैसला किया। शायद किसी को यह काम मिल जाएगा ...

var $m1 = $('#Modal1');
var $innermodal = $m1.find(".modal");     //get reference to nested modal
$m1.after($innermodal);                  // snatch it out of inner modal and put it after.

बहुत बहुत धन्यवाद

2

डेटा-खारिज का उपयोग करके मेरा कोड अच्छा काम करता है।

<li class="step1">
    <a href="#" class="button-popup" data-dismiss="modal" data-toggle="modal" data-target="#lightbox1">
        <p class="text-label">Step 1</p>
        <p class="text-text">Plan your Regime</p>
    </a>

</li>
<li class="step2">
    <a href="#" class="button-popup" data-dismiss="modal" data-toggle="modal" data-target="#lightbox2">
        <p class="text-label">Step 2</p>
        <p class="text-text">Plan your menu</p>
    </a>
</li>
<li class="step3 active">
    <a href="#" class="button-popup" data-toggle="modal" data-dismiss="modal" data-target="#lightbox3">
        <p class="text-label">Step 3</p>
        <p class="text-text">This Step is Undone.</p>
    </a>
</li>

1

पहले बूटस्ट्रैप मोडल को बंद करें और नए मोडल को गतिशील रूप से खोलें।

$('#Modal_One').modal('hide');
setTimeout(function () {
  $('#Modal_New').modal({
    backdrop: 'dynamic',
    keyboard: true
  });
}, 500);

1

सिर्फ मोडल बॉडी का कंटेंट क्यों नहीं बदला?

    window.switchContent = function(myFile){
        $('.modal-body').load(myFile);
    };

मोडल में बस एक लिंक या एक बटन लगाएं

    <a href="Javascript: switchContent('myFile.html'); return false;">
     click here to load another file</a>

यदि आप बस बीट्वीन 2 मोडल को स्विच करना चाहते हैं:

    window.switchModal = function(){
        $('#myModal-1').modal('hide');
        setTimeout(function(){ $('#myModal-2').modal(); }, 500);
        // the setTimeout avoid all problems with scrollbars
    };

मोडल में बस एक लिंक या एक बटन लगाएं

    <a href="Javascript: switchModal(); return false;">
     click here to switch to the second modal</a>

यह UX संबंधित उत्तर की तरह अधिक है, क्योंकि मुझे Modal # 1 के बारे में एक त्रुटि संदेश प्रदर्शित करने के लिए इसकी आवश्यकता थी। इसलिए मोडल # 2 में त्रुटि संदेश था। लेकिन अब यह उम्र हो गई है क्योंकि मैंने यह सवाल पूछा है और मैं अब इस तरह की चीजें कर रहा हूं।
एलेक्सियोवे

0

इसे इस्तेमाल करे:

$('.modal').on('hidden.bs.modal', function () {
//If there are any visible
  if($(".modal:visible").length > 0) {
      //Slap the class on it (wait a moment for things to settle)
      setTimeout(function() {
          $('body').addClass('modal-open');
      },100)
  }
});

0

इसका जवाब एच डॉग ने दिया बहुत अच्छा है, लेकिन यह दृष्टिकोण वास्तव में मुझे इंटरनेट एक्सप्लोरर 11 में कुछ मोडल झिलमिलाहट दे रहा था। बूटस्ट्रैप पहले 'मोडल-ओपन' क्लास को हटाने वाले मॉडल को छिपाएगा, और फिर (एच डॉग समाधान का उपयोग करके) हम जोड़ते हैं 'मोडल-ओपन' क्लास फिर से। मुझे संदेह है कि यह किसी भी तरह से झिलमिलाहट का कारण है जो मैं देख रहा था, शायद कुछ धीमी HTML / CSS रेंडरिंग के कारण।

एक अन्य उपाय यह है कि पहली जगह में शरीर के तत्व से 'मोडल-ओपन' क्लास को हटाने में बूटस्ट्रैप को रोका जाए। बूटस्ट्रैप 3.3.7 का उपयोग करते हुए, आंतरिक छिपाना फ़ंक्शन का यह ओवरराइड मेरे लिए पूरी तरह से काम करता है।

$.fn.modal.Constructor.prototype.hideModal = function () {
    var that = this
    this.$element.hide()
    this.backdrop(function () {
        if ($(".modal:visible").length === 0) {
            that.$body.removeClass('modal-open')
        }
        that.resetAdjustments()
        that.resetScrollbar()
        that.$element.trigger('hidden.bs.modal')
    })
}

इस ओवरराइड में, 'मोडल-ओपन' क्लास को केवल तभी हटाया जाता है, जब स्क्रीन पर कोई दृश्य मॉडल्स नहीं होते हैं। और आप निकाय तत्व में एक वर्ग को हटाने और जोड़ने के एक फ्रेम को रोकते हैं।

बूटस्ट्रैप लोड होने के बाद बस ओवरराइड को शामिल करें।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.