Search code examples
javascriptmodal-dialogsimplemodal

How to open a new modal window to close the current use of simplemodal


I use a simple modal under the eric on my project. It's a very good js

http://www.ericmmartin.com/projects/simplemodal/

I close the osx modal window as a button in osx modal window, at the same time wants to open a simple modal windows. But it was not easy.

How do you open a basic modal close osx modal open the osx modal?


Solution

  • If you check the page http://www.ericmmartin.com/projects/simplemodal/,

    Look for Callbacks

    There is onClose callback which you can use to close and open new modal when old one closed,

    Created following example

    Both Modals HTML

    //Modal One
    <a href="#" class="demo button">Demo</a> 
    <div id="basic-modal-content">      
    <h3>Basic Modal Dialog</h3>
        <p>For this demo, SimpleModal is using this "hidden" data for its content.
        You can also populate the modal dialog with standard HTML or with DOM element(s).</p>
        <p>
            <button class="simplemodal-close">Close</button> <span>(or press ESC)</span>
        </p>
    </div>
    //Modal Two 
    <div id="newmodal">     
    <h3>New Modal Dialog</h3>
    
        <p>Hey I'm new modal and open when old one is closed, Hey I'm new modal and open when old one is closed,
        Hey I'm new modal and open when old one is closed, Hey I'm new modal and open when old one is closed,
        Hey I'm new modal and open when old one is closed, Hey I'm new modal and open when old one is closed</p>
    </div>
    

    JS Code

    $(document).ready(function(){
        $('.demo').click(function (e) { //Open First Modal with Click Function
            e.preventDefault();
            $('#basic-modal-content').modal({ //First Modal Show
                onClose: function (dialog) { //On Close Function
                    dialog.data.fadeOut('slow', function () {
                        dialog.overlay.fadeOut('slow', function () {
                            $.modal.close(); // must call this to close old modal and clear all data!
                            $('#newmodal').modal(); //Open New Modal
                        });
                    });
                }
            });
        });
    });
    

    Working Fiddle Example