Topic: Events don't fire on datepicker control

DashMarketingGroup priority asked 11 months ago


I am trying to capture the close event on the datepicker control using the following code:

        <div class="row mb-4">
        <div class=" col-lg-4">
            <div class="form-outline datepicker" data-mdb-datepicker-init data-mdb-disable-future="true" data-mdb-input-init data-mdb-format="mm/dd/yyyy">
              <input type="text" class="form-control" style="width:200px !important;" id="dtStartDate" placeholder="mm/dd/yyyy" />
              <label for="dtStartDate" class="form-label">Select Start Date</label>
            </div>
        </div>
        <div class="col-lg-4">&nbsp;</div>
        <div class=" col-lg-4">
            <div class="form-outline datepicker" data-mdb-datepicker-init data-mdb-disable-future="true" data-mdb-input-init data-mdb-format="mm/dd/yyyy">
              <input type="text" class="form-control" style="width:200px !important;" id="dtEndDate" placeholder="mm/dd/yyyy" />
              <label for="dtEndDate" class="form-label">Select End Date</label>
            </div>
        </div>

    </div>
</div>
<script>
    $(document).ready(function () {
        const myDatepicker = document.querySelector('#dtStartDate')
        myDatepicker.addEventListener('close.mdb.datepicker', (e) => {
            alert('Date has been changed')
        })
    });

</script>

As you can see, there are 2 datepicker controls on the page for the user to select the starting and ending dates. I am testing the close event on the first control, dtStartDate, but when I open the datepicker, pick a date and then close it, nothing happens. There are no error messages in the console, but it also doesn't fire the close event code. What did I miss?


Grzegorz Bujański free answered 11 months ago


The event does not fire because you attach the event to the wrong element. Attach the event to an element with the .datepicker class

<div id="dtStartDateDatepicker" class="form-outline datepicker" data-mdb-datepicker-init data-mdb-disable-future="true" data-mdb-input-init data-mdb-format="mm/dd/yyyy">
  <input type="text" class="form-control" style="width:200px !important;" id="dtStartDate" placeholder="mm/dd/yyyy" />
  <label for="dtStartDate" class="form-label">Select Start Date</label>
</div>


const myDatepicker = document.querySelector('#dtStartDateDatepicker')
myDatepicker.addEventListener('close.mdb.datepicker', (e) => {
  alert('Date has been changed')
})


Please insert min. 20 characters.

FREE CONSULTATION

Hire our experts to build a dedicated project. We'll analyze your business requirements, for free.

Status

Answered

Specification of the issue

  • ForumUser: Priority
  • Premium support: Yes
  • Technology: MDB Standard
  • MDB Version: MDB5 7.3.2
  • Device: Laptop
  • Browser: Chrome
  • OS: Win 11
  • Provided sample code: No
  • Provided link: No