diff --git a/src/modal/modal.js b/src/modal/modal.js index 3b30469a29..f6af56714c 100644 --- a/src/modal/modal.js +++ b/src/modal/modal.js @@ -90,8 +90,18 @@ angular.module('ui.bootstrap.modal', ['ui.bootstrap.transition']) $timeout(function () { // trigger CSS transitions scope.animate = true; - // focus a freshly-opened modal - element[0].focus(); + + /** + * Auto-focusing of a freshly-opened modal element causes any child elements + * with the autofocus attribute to loose focus. This is an issue on touch + * based devices which will show and then hide the onscreen keyboard. + * Attempts to refocus the autofocus element via JavaScript will not reopen + * the onscreen keyboard. Fixed by updated the focusing logic to only autofocus + * the modal element if the modal does not contain an autofocus element. + */ + if (!element[0].querySelectorAll('[autofocus]').length) { + element[0].focus(); + } }); scope.close = function (evt) {