Элементы HTML: как имитировать нажатие клавиши табуляции

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

Спасибо!

(jQuery - это вариант)


person DanC    schedule 18.06.2010    source источник
comment
Возможный дубликат stackoverflow.com/ questions / 1803338 /   -  person Stephen P    schedule 19.06.2010
comment
DanC, вы нашли решение проблемы? У меня та же задача. Стивен Пи, это не дубликат, бывают ситуации, когда слишком сложно найти следующий активный элемент на странице, который следует сфокусировать.   -  person whitered    schedule 22.12.2010
comment
Стивен П., нет, я не нашел ответа. Я реструктурировал свой код так, чтобы он более или менее выполнял свою работу, но я не мог имитировать эффект нажатия клавиши табуляции.   -  person DanC    schedule 22.12.2010
comment
@whitered: добавлен новый ответ, который может вам помочь.   -  person Joel Purra    schedule 17.02.2012


Ответы (2)


Примерно так (с jQuery):

    <!DOCTYPE html>

    <html lang="en">

        <head>

            <title>LOL Focus!</title>

            <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>

        </head>

        <form>
          <input class="focusable" type="text" value="lol"/>
          <input class="focusable" type="text" value="lol" />
          <input class="focusable" type="text" value="lol" />
          <input class="focusable" type="text" value="lol" />
          <input class="focusable" type="text" value="lol" />
          <input class="focusable" type="text" value="lol" />                 
        </form> 

        <input type="button" id="trigger_button" value="lol" />

        <script type="text/javascript">
        $(function() {

          var focusable = $('.focusable'),
              last_element_index = focusable.length - 1,
              current_index;

          focusable.each(function(i) {
            $(this).click(function() {
              current_index = i;
            })
          });

           $('#trigger_button').click(function() {
             current_index = (should_reset_current_index()) ? 0 : current_index + 1;
             focusable[current_index].focus();
           });

           function should_reset_current_index() {
             return (typeof(current_index) === 'undefined') || (current_index == last_element_index)
           }

        });
      </script>

    </html>
person patrick    schedule 08.09.2011

Некоторое время назад нужно было имитировать функциональность вкладок, и теперь я выпустил ее как библиотеку, в которой используется jquery.

EmulateTab: плагин jQuery для имитации табуляции между элементами на странице.

Вы можете увидеть, как это работает, в демонстрации.

if (myTextHasBeenFilledWithText) {
  // Tab to the next input after #my-text-input
  $("#my-text-input").emulateTab();
}
person Joel Purra    schedule 17.02.2012