25

Does a bootstrap modal have an onload event? I want to call a http GET request when the modal is opened to populate the modal with data from a rest api. I have a form in the modal and I have called the GET function on the onload event of the form, but it doesn't work.

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title" id="myModalLabel">Agent details:</h4>
      </div>
      <div class="modal-body">

<form onload="getData()" style= "font-size: 16pt">
Emad Armoun
  • 1,625
  • 2
  • 19
  • 32
bookthief
  • 2,443
  • 8
  • 41
  • 54
  • 2
    Please, read the documentation thoroughly before asking questions here. It's not that we don't want to help, it's just that we want you to try to do it yourself first. – Blazemonger Nov 21 '13 at 14:41

2 Answers2

54

Per the documentation, you can listen to the show or shown events.

From The Documentation:

show.bs.modal => This event fires immediately when the show instance method is called.

shown.bs.modal => This event is fired when the modal has been made visible to the user (will wait for CSS transitions to complete).

$('#myModal').on('show.bs.modal', function () {
  // do something…
})
Community
  • 1
  • 1
Dmase05
  • 1,059
  • 15
  • 18
5

What I've found to be the best way to do this is to add the onclick attribute to the html element that calls the modal.

<button type="button" onclick="PopulateAddModal()" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#AddModal">Add</button>

Then in your javascript..

    function PopulateAddModal() {
      //do stuff here...
      }

This will ensure that your code is ran as soon as the modal is called. Otherwise, the javascript code will not run until the modal has completely finished it's "fade-in" animation.

lbecker34
  • 59
  • 1
  • 1