I'm working with Twitter Bootstrap at the moment, and I'm encountering a strange problem in the tabindex of a modal:
I'm trying to tab through the form elements inside the modal, but after the last button the focus disappeared before coming back to the close button. I added a line in console that logs which element is being focused, and it turned out to be the modal itself, even though it has tabindex="-1"
.
I'm unable to share my code, but a quick look at the Bootstrap docs told me that it also happens in their example modal. The problem is reproducable:
Putting this in console will log whenever the modal (or in fact any element with tabindex="-1"
) gains focus.
$('[tabindex="-1"]').focus(function(){
console.log('Focus is on an element with negative tabindex')
});
(It also logs it when you click on the modal obviously, but that's out of scope).
Why does this happen? How can I prevent this? Is this a browser bug, a bug/feature of Twitter Bootstrap, or something else entirely?
Interesting find. It appears to be some sort of bug or behavior introduced by bootstrap; Very odd behavior for tab index -1.
Here is one work around using jQuery, which involves setting a first
and last
id on the first and last tab-able elements on the modal.
$('#myModal').keydown(function(e){
if($('#last').is(":focus") && (e.which || e.keyCode) == 9){
e.preventDefault();
$('#first').focus();
}
});
Example