I'd like to be able to have a number of different links on a page reuse one modal div via Bootstrap's modal plugin:
<h3>This button shows a modal (<code>#utility</code>) with text "Phasellus <em>tincidunt gravida</em>..."</h3>
<br />
<a id="file_attach" data-toggle="modal" href="http://fiddle.jshell.net/jhfrench/6K8rD/show/" data-target="#utility" class="btn">Modal 1</a><br />
<h3>This button should invoke the same modal (<code>#utility</code>), but fill it with text "Phasellus <em>egestas est eu</em>..."</h3>
<br />
<a id="file_attach" data-toggle="modal" href="http://fiddle.jshell.net/jhfrench/AWSnt/show/" data-target="#utility" class="btn">Modal 2</a><br />
<!-- Modal -->
<div id="utility" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Click outside modal to close it</h3>
</div>
<div class="modal-body">
<p>One fine body…this is getting replaced with content that comes from passed-in href</p>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
<button class="btn btn-primary">Save changes</button>
</div>
</div>
I'd expect that clicking on either link (which are styled as buttons) would invoke the modal and load the modal with the page (value of href
) corresponding to the clicked button. Instead, the modal always loads with the content of the link you click first; the modal does not "refresh" with content that should be dictated by href
of the "other" link.
I think this is a Bootstrap bug, but I'm asking the question here in case I'm using it incorrectly.
Please see http://jsfiddle.net/jhfrench/qv5u5/ for a demonstration.
After further research, I found a few Bootstrap issues mentioning this behaviour here and here. I've asked for issue 5514 to be reopened.
Meanwhile, this jQuery will patch up the problem*:
Please see http://jsfiddle.net/jhfrench/qv5u5/51/ for a working example.*
*-For some reason, sometimes when you click the button in the fiddle the modal will show blank. This is not a problem in the application I'm working with, so I suspect it's a problem unrelated to this question/answer.
Instead of having to write html markups of modal and manipulate it via javascript, I would use Bootstrap-Dialog to ease everything:
See here for a live demo, it loads the two urls you provided in your example: http://jsfiddle.net/txrM8/
See more about Bootstrap-Dialog: http://nakupanda.github.io/bootstrap-dialog/