I believe there is a bug in how ui dialog keeps focus in the dialog. This version 1.7.2.
I have not checked if it is fixed in newer versions. I need the most stable release at this point.
It uses keypress to handle the tab key but IE7 doesn't give tab to keypress.
I changed it to use keydown as so:
// prevent tabbing out of modal dialogs
(options.modal && uiDialog.bind('keypress.ui-dialog', function(event) {
and a corresponding change in the close method.
I made two other minor changes.
When tab on the first or last focusable is detected the focus call is wrapped in a setTimeout.
However initial dialog focus is not set in a setTimeout. In addition the normal behavior for
a text input when it receives focus is to select the contents of the text. I changed the
code as follows:
// set focus to the first tabbable element in the content area or the first button
// if there are no tabbable elements, set focus on the dialog itself
$([])
.add(uiDialog.find('.ui-dialog-content :tabbable:first'))
.add(uiDialog.find('.ui-dialog-buttonpane :tabbable:first'))
.add(uiDialog)
.filter(':first')
.each(function() {
var self = this;
setTimeout(function() {
self.focus();
if (self.nodeName == "INPUT" && self.type == "text") {
self.select();
}
}, 1);
});