Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.12.2012, 12:33
Аспирант
Отправить личное сообщение для svs_js Посмотреть профиль Найти все сообщения от svs_js
 
Регистрация: 06.05.2012
Сообщений: 31

Табуляция инпута при нажатии Enter
Всем привет,

Есть форма. При нажатии на Энтер в любом поле делать Фокус на следующем инпуте.

this.element.find('input[type=text]').on("keydown", function (e) {
                if (e.keyCode == '13') {
                    $(this).next().focus();
                    return false;
                }
            });


Данная конструкция не работает. Не пойму, в чем ошибка.
Ответить с цитированием
  #2 (permalink)  
Старый 05.12.2012, 13:28
Аспирант
Отправить личное сообщение для Sanda Посмотреть профиль Найти все сообщения от Sanda
 
Регистрация: 12.10.2012
Сообщений: 90

Потому что next() не обязан возвращать input - он вполне может вернуть div. Если инпуты идут в одном блоке, должна сработать такая конструкция:
$(this).next('input').focus();

Если же вёрстка более сложная, придётся искать обходные пути.
Ответить с цитированием
  #3 (permalink)  
Старый 05.12.2012, 14:04
Аспирант
Отправить личное сообщение для svs_js Посмотреть профиль Найти все сообщения от svs_js
 
Регистрация: 06.05.2012
Сообщений: 31

да, верстка более сложная. и все инпуты внутри объекта
this.element
Ответить с цитированием
  #4 (permalink)  
Старый 05.12.2012, 14:30
Аспирант
Отправить личное сообщение для Sanda Посмотреть профиль Найти все сообщения от Sanda
 
Регистрация: 12.10.2012
Сообщений: 90

Тогда могу предложить несколько вариантов:
1. Руками прописать в разметке или в скрипте порядок, в котором должен переключаться фокус.
2. Делать с помощью NodeIterator (или его самописного аналога, если требуется поддержка IE8).
Ответить с цитированием
  #5 (permalink)  
Старый 05.12.2012, 14:36
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Я бы так сделал: посмотрел номер num инпута с помощью index() и перефокусировал на num+1
Только проверка нужна на последнем поле, что перефокусировка на на num=0

Последний раз редактировалось Serg_pnz, 05.12.2012 в 16:21. Причина: исправлено
Ответить с цитированием
  #6 (permalink)  
Старый 05.12.2012, 14:55
Аспирант
Отправить личное сообщение для Sanda Посмотреть профиль Найти все сообщения от Sanda
 
Регистрация: 12.10.2012
Сообщений: 90

Serg_pnz,
а jQuery гарантирует, что элементы в выборке расположены в том же порядке, что и в documentOrder? Никак не могу найти упоминание об этом.
Ответить с цитированием
  #7 (permalink)  
Старый 05.12.2012, 16:20
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

я там напутал, eq() и index()

Sanda,
а нам-то что? Мы заюзаем index() от jquery в пределах формы.
Или теперь я что-то не понял?
Ответить с цитированием
  #8 (permalink)  
Старый 05.12.2012, 16:40
Аспирант
Отправить личное сообщение для Sanda Посмотреть профиль Найти все сообщения от Sanda
 
Регистрация: 12.10.2012
Сообщений: 90

Serg_pnz,
где гарантия, что следующий скрипт выведет 'div1'?
<div id="div1"></div>
<div id="div2"></div>
<script>
  alert($('div')[0].id)
</script>


UPD: нашёл ссылку для случая селектора по tagName. Действительно, тут всегда div1, потому что jQuery использует getElementByTagName. Но в целом не могу найти ссылку на то, что в выборке jQuery элементы всегда расположены в том же порядке, что и в document order.

Последний раз редактировалось Sanda, 05.12.2012 в 16:53.
Ответить с цитированием
  #9 (permalink)  
Старый 05.12.2012, 20:48
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Sanda,
не спорю, но если вёрстка позволяет, то почему не использовать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
смена картинок при нажатии sdff Общие вопросы Javascript 15 08.02.2014 17:08
Присваивание класса при нажатии на ссылку skorpeeon Элементы интерфейса 10 25.07.2013 20:07
onClick на button при нажатии Enter atech Events/DOM/Window 2 09.08.2012 16:48
Блок должен перемещаться из одной точки в другую, а при повторном нажатии обратно Ser12345678 jQuery 2 17.07.2012 12:18
SyntaxHighlighter подсветка при нажатии faraday Общие вопросы Javascript 3 31.03.2012 23:43