2009-05-29 2 views
0

У меня есть страница на сайте, содержащая iframe с формой. Я не могу изменить это, но у меня есть полный контроль над всем JS, который работает на родительской странице и на странице iframe'd.Почему я не могу вставлять элементы формы внутри iframe?

Моя проблема заключается в том, что когда у меня есть поле формы, сфокусированное в документе iframe'd, табуляция в следующее поле отправляет курсор прямо в адресную строку браузера, а не следующее поле в форме. Установка 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          | 
+-------------------------------------------+ 

Одна идея состояла в том, чтобы попытаться захватить KeyDown события в IFRAME, проверьте вкладку или Shift + Tab, а затем переориентировать iframe, но тогда есть проблема знать, в каком поле я был включен, прежде чем потерять фокус. Есть ли способ динамически сфокусировать следующее поле с использованием JS и атрибута tabindex в полях формы? Может быть, где я рискую дальше ...

Update:, возможно, есть что-то еще проще, что я пропускаю. Например, окно входа в http://www.studentloan.com является iframe, и я могу вставить вкладку между этими полями. Возможно, что-то еще в моем JS вызывает проблему.

Update 2: Я попытался ЗАГРУЗКА только документ Iframe в браузере в качестве отдельной страницы, и я до сих пор не могу вкладку. Я думаю, что это то, что я делаю в JS где-то еще, что заставляет документ терять фокус. Я отправлю свое решение, когда найду его.

Update 3:

Проблема вызвана ModalPopupExtender Аякса Control Tookit в. Я использую одно как сообщение загрузки после вызова веб-службы. Он скрывается при запуске метода обратного вызова.

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

Спасибо!

ответ

1

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

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

+0

Ты точно прав. У меня есть куча MPE, которые работают очень хорошо, был только один проблемный (у него не было полей формы - интересно, было ли это частью проблемы). Спасибо, что вернулись, чтобы опубликовать это! –

0

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

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

+0

Все приложение рассчитано на использование веб-сервисов AJAX и .NET 3.5. Единственное, что я хочу, но не могу изменить, это использование iframe. Самое смешное, что я помню, что табуляция работает до ... –

Смежные вопросы