2013-05-14 3 views
4

В настоящее время я изучаю диалог jQuery и хотел бы использовать его в моем побочном проекте. Я хочу добавить tabindex в divs в диалоговом окне для табуляции. Но фокус идет в другом месте, когда я вставляю последний элемент в диалоговом окне.Сохранение фокуса вкладки в диалоговом окне jQuery

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

Спасибо!

ответ

0

Отключить табуляции на любые элементы, которые вы хотите, чтобы пропустить как это:

$("#element").attr("tabIndex", -1); 
+0

Проблема с этим решением - когда диалог закрыт, все те элементы, которые были изменены на tabindex -1, больше не будут табулироваться. Поэтому, если в диалоговом окне есть форма, она больше не будет работать так же, как до открытия диалога. –

6

Добавить событие нажатие на последнем элементе игнорировать действие вкладки по умолчанию и поставить фокус обратно на первый элемент в диалоговом окне.

В следующем примере предполагается, что последний элемент - last_element_id, а первый - first_element_id.

$('#last_element_id').on('keydown', function(e) { 
    if ((e.keyCode || e.which) == 9) { 
     $('#first_element_id').focus();  
     e.preventDefault(); 
    } 
}); 
+0

Использование 'e.which' является достаточным, так как jQuery уже нормализует это для нас. –

0

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

, например. изменить индекс вкладок от 10 до -10, а затем вернуться к 10

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