jQuery UI Dialog и Textarea Focus Issue - PullRequest
7 голосов
/ 27 января 2010

Я работаю над модальной системой комментариев, использующей jQuery и jQuery UI, но у меня есть некоторые проблемы с фокусом. У меня есть серия div внутри модального режима для переключения между Login и Add comment, как показано ниже:

<div id="modal" title="Loading">
 <div id="modalContent"></div>

 <div id="modalLogin">
  <div class="loginBox"></div>
  <div class="addCommentBox"></div>
  <div class="commentReview"></div>
 </div>
</div>

Внутри addCommentBox div у меня есть код комментария:

 <form action="/comments/add" class="addCommentForm" name="addCommentForm" method="post">
  <textarea name="content" class="addCommentContent"></textarea>
  <button value="Add Comment" type="submit" class="commentPost"/>
  <button value="Clear Comment" type="submit" id="clearComment"/>
 </form>

Проблема в том, что примерно через половину времени после открытия диалогового окна текстовое поле внутри addCommentBox div не реагирует на ввод с клавиатуры при выборе. Мышь работает правильно и позволяет выделять текст, но управление с клавиатуры ничего не делает.

У меня нет слушателей событий на textarea. У меня есть некоторые кнопки, но они предназначены только для кнопок.

Единственное, что происходит в HTML, это тот факт, что каждый раз, когда я нажимаю на модал, z-индекс увеличивается для всего модального div. Я установил для дивизиона addCommentBox z-индекс 9999, больше, чем z-индекс модала.

Будем весьма благодарны за любые предложения или указания по исследованию. Спасибо!

Ответы [ 5 ]

1 голос
/ 22 апреля 2010

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

0 голосов
/ 20 апреля 2011

Попробуйте установить свойство TABINDEX для текстовой области, если оно не установлено.

0 голосов
/ 20 апреля 2011

Похоже, проблема в чем-то другом на странице. Вы проверили это, поместив вышеуказанную функцию на отдельную страницу, отличную от всех других функций?

0 голосов
/ 16 апреля 2011

При открытии диалогового окна попробуйте сфокусировать текстовое поле во время функции «открыть».

$('#modal').dialog({
    open: function () {
        $('textarea[name=content]').focus();
    }
});
0 голосов
/ 12 апреля 2011

Как вы прячете loginBox и commentReview? Если вы используете непрозрачность, возможно, что то, что вы не видите, находится поверх текстовой области.

Вы не увидите элементы с непрозрачностью 0, но они все еще там во всех остальных отношениях. Они будут принимать события мыши, мешая вам нажать на текстовую область.

Если вы видите текстовую область, то это не похоже на проблему с z-индексом.

...