I have such problem - I need to autofocus some element inside twitter bootstrap modal (after it shows). The tricky part is here - content of this modal is loaded using 'data-remote' (jQuery.load method) from separate HTML file, so
$(document).on('shown', ".modal", function() { $('[autofocus]', this).focus(); });
works only if modal was loaded before.
The question is - how to make autofocus work at the first time modal loads?
Answer: Use the jQuery . focus() method You can simply use the jQuery . focus() method to set the focus on the first input box or textarea inside the Bootstrap modal when it is loaded upon activation.
tab, shift + tab and enter key and focus should be trapped inside modal and should not go out after pressing tab key multiple times.
I'm using Bootstrap 3.0 (hopefully, this works with 3.1 as well).
We had to use tabindex="-1"
because that allows the ESC key to close the modal.
So I was able to fix this issue using:
// Every time a modal is shown, if it has an autofocus element, focus on it. $('.modal').on('shown.bs.modal', function() { $(this).find('[autofocus]').focus(); });
try removing tabindex="-1" and it works fine.
<div class="modal fade" id="modalID" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal fade" id="modalID" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
Hope this helps!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With