У меня есть всплывающее окно с большим количеством элементов управления. Если я постоянно нажимаю на вкладку, фокус не должен уходить из div в родительскую форму. Как это сделать? Thanksограничить фокус на конкретном div
ответ
В onblur Событие последнего управления перемещает фокус на первый элемент управления внутри div.
попробуйте использовать modal div, если вы хотите абсолютно убедиться, что фокус не уходит.
Это невозможно выполнить в виде простого HTML.
Есть, однако, несколько сценариев, которые позаботятся об этом для вас. Я бы настоятельно рекомендовал использовать один из них, поскольку есть некоторые проблемы, которые необходимо решить (A dropdown might appear in front of your modal div).
Если вы используете asp.net, вы можете проверить инструментарий управления ajax, который имеет модальное всплывающее диалоговое окно.
Практически каждый приличный javascript framework имеет плагины для выполнения этого. Я случайно много работать с JQuery, который имеет ряд плагинов для обработки этого:
- JQuery Блок интерфейса (http://malsup.com/jquery/block/#dialog)
- JQuery Popup Dialog (http://vision-media.ca/resources/jquery/jquery-popup-plugin-review)
- JQuery модальные диалоговые окна (http://www.84bytes.com/2008/06/02/jquery-modal-dialog-boxes/)
- ... есть намного больше, чтобы найти на http://plugins.jquery.com/search/node/popup
И если вы обнаружите необходимость сделать его самостоятельно, вот учебник о том, как это сделать используя jQuery: http://www.queness.com/post/77/simple-jquery-modal-window-tutorial
Удачи вам в поиске решения, которое вам подходит лучше всего!
Я реализовал мини-рамки на основе сбора знаний, включая ответы в этом посте.
Он использует интерфейс JQuery.
Усовершенствования приветствуются.
Вот основа объекта:
var TabLim = {};
TabLim.activate = function(el) {
TabLim.deactivate();
TabLim._el = el;
$(window).on('keydown', TabLim._handleTab);
return TabLim;
};
TabLim.deactivate = function() {
TabLim._el = null;
// detach old focus events
TabLim._detachFocusHandlers();
TabLim._els = null;
TabLim._currEl = null;
$(window).off('keydown', TabLim._handleTab);
return TabLim;
};
TabLim.setFocus = function(prev) {
// detach old focus events
TabLim._detachFocusHandlers();
// scan for new tabbable elements
var tabbables = TabLim._el.find(':tabbable');
TabLim._els = [];
// wrap elements in jquery
for (var i = 0; i < tabbables.length; i++) {
var el = $(tabbables[i]);
// set focus listener on each element
el.on('focusin', TabLim._focusHandler);
TabLim._els.push(el);
}
// determine the index of focused element so we will know who is
// next/previous to be focused
var currIdx = 0;
for (var i = 0; i < TabLim._els.length; i++) {
var el = TabLim._els[i];
// if focus is set already on some element
if (TabLim._currEl) {
if (TabLim._currEl === el[0]) {
currIdx = i;
prev ? currIdx-- : currIdx++;
break;
}
} else {
// focus is not set yet.
// let's set it by attribute "autofocus".
if (el.attr('autofocus') !== undefined) {
currIdx = i;
break;
}
}
}
if (currIdx < 0) {
currIdx += TabLim._els.length;
}
if (TabLim._els.length) {
TabLim._els[Math.abs(currIdx % TabLim._els.length)].focus();
}
return TabLim;
};
TabLim._handleTab = function(e) {
if (e.which === 9) {
e.preventDefault();
TabLim.setFocus(e.shiftKey);
}
};
TabLim._focusHandler = function(e) {
TabLim._currEl = e.currentTarget;
};
TabLim._detachFocusHandlers = function() {
if (TabLim._els) {
for (var i = 0; i < TabLim._els.length; i++) {
TabLim._els[i].off('focusin', TabLim._focusHandler);
}
}
};
Как использовать:
1), чтобы активировать, чтобы ограничить фокус на конкретных DIV
TabLim.activate($('.yourDic')).setFocus();
2), чтобы отключить
TabLim.deactivate();
- 1. Css на конкретном div
- 2. Включить прокрутку на конкретном div
- 3. Фокус отключен на div
- 4. Фокус на элемент div
- 5. Как установить фокус на DIV
- 6. Переключить псевдокласс: после на конкретном div
- 7. Якорь ссылка не собирается на конкретном DIV
- 8. Как применить css на конкретном div?
- 9. Начать загрузку бара на конкретном div javascript
- 10. PHP - Ошибка печати на конкретном div
- 11. Применение skrollr на конкретном прокручиваемом div
- 12. Detect mouseup на конкретном div jquery
- 13. Как предотвратить отправку формы, когда фокус находится на конкретном входе?
- 14. Фокус DIV из массива DIV
- 15. Ограничить приложение на основе андроид-карты в конкретном городе
- 16. Установить фокус на div в функции javascript
- 17. изменение css, когда фокус на изменения div
- 18. Установить фокус на DIV с нг нажмите
- 19. Фокус и триггер вводят ключ на div
- 20. «float: left» div нажимается на фокус ввода
- 21. Jquery :: Keypress и фокус на скрытом DIV
- 22. Как имитировать фокус на элементе div?
- 23. Изменить фон ссылки на фокус div
- 24. URL ссылки onclick и фокус на div
- 25. Как установить фокус на div из TextAngular
- 26. Ограничить текст до Div
- 27. Как закрыть div, когда div теряет фокус?
- 28. Фокус из div, но не при нажатии на div - JQuery
- 29. Как ограничить окно javascript.find на конкретный DIV?
- 30. Ограничить перетаскивание DIV на основе CSS класса