У меня есть страница на сайте, которая содержит фрейм с формой. Я не могу изменить это, но у меня есть полный контроль над всеми JS, которые запускаются на родительской странице и странице iframe'd.
Моя проблема в том, что, когда у меня есть поле формы, сфокусированное в документе iframe, при переходе на следующее поле курсор направляется прямо в адресную строку браузера, а не в следующее поле формы. Установка tabindexes для каждого из полей не помогает.
Браузер обрабатывает весь 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. Я использую один в качестве сообщения загрузки после вызова веб-службы. Он скрывается, когда вызывается метод обратного вызова.
Я могу переключаться между полями, пока модальное всплывающее окно не отобразится и не будет скрыто в первый раз. После этого форма никогда не сможет удерживать фокус. Я расследую почему и опубликую ответ, если смогу узнать почему.
Спасибо!