Search code examples
jquerymodal-dialogmaterialize

Materialize Modal Event won't be called


I have it in my custom-script.js file

$(document).ready(function () {
  $('.modal').modal({
      onOpenStart() {
          console.log("Open Start");
      },
      onOpenEnd() {
          console.log("Open End");
      },
      onCloseStart(){
          console.log("Close Start");
      },
      onCloseEnd(){
          console.log("Close End");
      },
  });
});

And that's my modal and button:

 <script src="./app-assets/js/custom/custom-script.js"></script>
 <ul id="dropdown2" class="dropdown-content">
 <li><a href="#" class="modal-trigger" data-target="modal1">Anschauen</a></li>

<!-- Modal Structure -->
<div  id="modal1" class="modal">
    <div class="modal-content">
      <h4>Arbeitsplan bearbeiten</h4>
            <!-- Form Advance -->
            <div class="col s12 m12 l12">
                    <div class="card-content">
                    </div>
            </div>
    </div>
<div class="modal-footer">
    <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat ">Abbrechen</a>
      <a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat ">Bestätigen</a>
</div>
</div>

Somehow the function wont be called I click on the modal and modal is opened or closed. So I see nothing in console at all...

Thanks


Solution

  • Your syntax is incorrect. You need to provide functions to properties with those names. Try this:

    jQuery(function($) {
      $('.modal').modal({
        onOpenStart: function() {
          console.log("Open Start");
        },
        onOpenEnd: function() {
          console.log("Open End");
        },
        onCloseStart: function() {
          console.log("Close Start");
        },
        onCloseEnd: function() {
          console.log("Close End");
        },
      });
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
    
    <ul id="dropdown2">
      <li><a href="#" class="modal-trigger" data-target="modal1">Anschauen</a></li>
    </ul>
    
    <div id="modal1" class="modal">
      <div class="modal-content">
        <h4>Arbeitsplan bearbeiten</h4>
        <div class="col s12 m12 l12">
          <div class="card-content">
          </div>
        </div>
      </div>
      <div class="modal-footer">
        <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat ">Abbrechen</a>
        <a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat ">Bestätigen</a>
      </div>
    </div>