Ich habe ein Popup div, das viele Kontrollen hat. Wenn ich kontinuierlich auf die Registerkarte drücke, darf der Fokus nicht von der Div-zu-Eltern-Form gehen. Wie kann ich das tun? Dankeschränken fokus auf bestimmte div
Antwort
In der onblur Ereignis der letzten Steuerung verschiebe den Fokus auf die erste Steuerung innerhalb der div.
versuchen Sie mit einer modal div, wenn Sie unbedingt sicherstellen möchten, dass der Fokus nicht verlassen.
Dies ist nicht möglich, in reinem HTML zu erzwingen.
Es gibt jedoch einige Skripte, die sich darum kümmern. Ich würde dringend empfehlen, einen von ihnen zu verwenden, da es einige Probleme gibt, die angesprochen werden müssen (A dropdown might appear in front of your modal div).
Wenn Sie asp.net verwenden, können Sie die Ajax Control Toolkit, die eine modale Popup-Dialog hat.
Fast jedes anständige Javascript-Framework hat Plugins, um dies auch zu erreichen. Ich geschehe viel mit jQuery arbeiten, die eine Reihe von Plugins, hat diese zu handhaben:
- jQuery-Block UI (http://malsup.com/jquery/block/#dialog)
- jQuery Popup Dialog (http://vision-media.ca/resources/jquery/jquery-popup-plugin-review)
- jQuery modalen Dialogfelder (http://www.84bytes.com/2008/06/02/jquery-modal-dialog-boxes/)
- ... es viel mehr sind bei http://plugins.jquery.com/search/node/popup
gefunden werden, und wenn Sie die Notwendigkeit für Sie zu einer sich selbst zu machen, hier ist eine Anleitung, wie man es tun mit jQuery: http://www.queness.com/post/77/simple-jquery-modal-window-tutorial
Viel Glück bei der Suche nach einer Lösung, die Ihnen am besten passt!
Ich habe Mini-Framework basierend auf sammeln Wissen einschließlich Antworten in diesem Beitrag implementiert.
Es verwendet JQuery UI.
Verbesserungen sind willkommen. Hier
ist Rahmenobjekt:
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);
}
}
};
Wie man es verwendet:
1) konzentrieren sich auf spezifische div
TabLim.activate($('.yourDic')).setFocus();
2) zu begrenzen, zu aktivieren, zu deaktivieren
TabLim.deactivate();
- 1. Fokus in bestimmte div ändern
- 2. drag Element auf bestimmte div
- 3. Fokus auf terget div Element mit get
- 4. Set Fokus auf div contenteditable Element
- 5. Detect Mouseup auf bestimmte div jquery
- 6. Machen div Element auf bestimmte Eingabe unsichtbar
- 7. Setzen Sie den Fokus auf eine bestimmte DataGrid-Zelle
- 8. Wie der Fokus auf bestimmte Zelle in UI Grid setzen
- 9. Fokus einstellen UND Cursor auf bestimmte JTable-Zelle blinkend
- 10. wie Fokus auf bestimmte Zelle von WPF Toolkit Datagrid setzen
- 11. Auf Fokus, tun maßgeschneiderten Fokus auf TextArea-
- 12. Wie schränken Sie die Benutzer auf bestimmte Seiten ein, bevor sie sich in Spring MVC anmelden?
- 13. Fokus auf Feld in dynamisch geladenem DIV setzen
- 14. jQuery Fokus für gesamte div und Kinder
- 15. Fokus von einem Inhalt editierbare div entfernen
- 16. Siehe, ob ContentEditable div Fokus hat
- 17. Entfernen: Fokus auf: aktiv
- 18. entfernen span-Element auf Fokus
- 19. Umriss Verhalten beim Fokus auf Klick und Fokus auf Registerkarte
- 20. Wie auf bestimmte div Kind einer bestimmten Klasse zugreifen?
- 21. Wie zielen Sie auf Überschriften für eine bestimmte Div-ID?
- 22. Zeige/Verstecke bestimmte Div mit JQuery auf Knopf Klicken
- 23. verstecken/zeigen bestimmte div nach links rel auf schweben
- 24. Wie man auf eine bestimmte Stelle in div klickt
- 25. SASS Dateien anwenden Verzeichnis-Import auf bestimmte div
- 26. Counter Start auf bestimmte Div Scroll in Javascript
- 27. Event.relatedTarget ist Null auf Fokus auf Touchscreen
- 28. Beschränken URLs auf bestimmte Anwendungen in Django
- 29. Fokus auf Tastatur Registerkarte
- 30. Set Fokus auf Formular