У меня есть страница на сайте, которая содержит iframe с формой. Я не могу это изменить, но у меня есть полный контроль над всем JS, который работает на родительской странице и на странице iframe.
Моя проблема заключается в том, что когда у меня есть поле формы, сфокусированное в документе iframe, переход к следующему полю отправляет курсор прямо в адресную строку браузера, а не в следующее поле в форме. Установка tabindex для каждого из полей не помогает.
Браузер рассматривает весь iframe как один из элементов на странице (как и должно быть), но мне интересно, есть ли способ захватить события вкладки и заставить фокус оставаться внутри iframe и с его дочерними элементами .
Кто-нибудь из вас сталкивался с этой проблемой раньше и как ее обойти?
Не то, чтобы это вам помогло, но макет примерно такой:
+-------------------------------------------+
| Parent page |
| +-------------------------------+ |
| N | iframe | |
| a | | |
| v | Has about 50 fields that I'd | |
| i | like to be able to tab between| |
| g | | |
| a | But I can't! Help! | |
| t | | |
| i +-------------------------------+ |
| o |
| n |
+-------------------------------------------+
Одна из идей заключалась в том, чтобы попытаться зафиксировать события нажатия клавиш в iframe, проверить наличие табуляции или shift+tab, а затем перефокусировать iframe, но тогда возникает проблема с знанием того, в каком поле я был, прежде чем потерять фокус. Есть ли способ динамически сфокусировать следующее поле с помощью JS и атрибута tabindex в полях формы? Возможно, именно туда я рискну в следующий раз...
Обновление: возможно, я упустил что-то еще более простое. Например, окно входа на http://www.studentloan.com представляет собой iframe, и я могу переходить между эти поля просто отлично. Возможно, что-то еще в моем JS вызывает проблему.
Обновление 2. Я попытался загрузить только документ iframe в браузере как отдельную страницу, но по-прежнему не могу открыть вкладку. Я думаю, что это то, что я делаю в JS где-то еще, что приводит к тому, что документ теряет фокус. Я опубликую свое решение, когда найду его.
Обновление 3:
Проблема вызвана ModalPopupExtender Ajax Control Tookit. Я использую один как сообщение о загрузке после вызова веб-сервиса. Он скрывается при запуске метода обратного вызова.
Я могу переключаться между полями, пока модальное всплывающее окно не будет показано и скрыто в первый раз. После этого форма никогда не сможет удерживать свой фокус. Я выясняю, почему, и опубликую ответ, если смогу узнать, почему.
Спасибо!