Почему я не могу переключаться между элементами формы в iframe? - PullRequest
0 голосов
/ 29 мая 2009

У меня есть страница на сайте, которая содержит фрейм с формой. Я не могу изменить это, но у меня есть полный контроль над всеми 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. Я использую один в качестве сообщения загрузки после вызова веб-службы. Он скрывается, когда вызывается метод обратного вызова.

Я могу переключаться между полями, пока модальное всплывающее окно не отобразится и не будет скрыто в первый раз. После этого форма никогда не сможет удерживать фокус. Я расследую почему и опубликую ответ, если смогу узнать почему.

Спасибо!

Ответы [ 2 ]

1 голос
/ 23 июля 2009

У меня была почти такая же проблема, как и у вас. После долгих поисков решения я нашел эту сеть, где я мог найти причину этой проблемы: modalpopupextender. Как только я понял, в чем заключается настоящая проблема, найти решение было довольно легко. Вот оно: http://forums.asp.net/t/1191142.aspx

Надеюсь, это поможет вам понять эту проблему так же, как и для меня.

0 голосов
/ 29 мая 2009

Я полагаю, использование ajax вне вопроса?

Если это не так, то у вас нет проблем с вкладками iframe, поскольку ваша форма является частью текущей страницы.

...