So habe ich mehrere Eingabeformulare, die deaktiviert sind, bis sie aufgrund von Datenaufrufen an den Server aufgrund ihrer Auswahl nacheinander ausgefüllt werden. Ich habe ein benutzerdefiniertes Dropdown-Menü, mit dem ich einen Tipp machen und auf das gewünschte Element klicken kann. Wenn ich auf das Element klicke, wird das Feld mit einer Kombination aus onblur- und onchange-Ereignissen geöffnet, die für mein Datenmodell stattfinden. Das Problem, das für mich ins Spiel kommt, ist, dass ich möchte, dass der Benutzer Tabs erstellen kann. Aber wenn ich auf Tab klicke, haben Onblur und Onchange das Feld nicht deaktiviert, so dass es mehrere Felder überspringt, die es nicht sollte. Gibt es irgendwelche Vorschläge zum Verhindern, dass ein Tab-Tastendruck das deaktivierte Element überspringt? Kann ich auf ein deaktiviertes Element zugreifen?Event Control mit KeyPress 'Tab'
Antwort
das nicht möglich ist, da die Dokumentation sagen:
Eine Form Steuerung deaktiviert wird, wenn seine disabled-Attribut gesetzt ist, oder wenn es ein Nachkomme eines Fieldset Element, dessen disabled-Attribut gesetzt ist, und ist nicht ein Nachfolger des ersten Legendenelements des Fieldset-Elements, sofern vorhanden.
Ein Formularsteuerelement, das deaktiviert ist muss verhindern, dass alle Klickereignisse, die für die Benutzerinteraktionsaufgabenquelle in der Warteschlange stehen, für das Element ausgelöst werden.
Sie können also nicht auf diese Elemente klicken, und Sie können Element nicht fokussieren, das nicht angeklickt werden kann.
https://www.w3.org/TR/html5/forms.html#concept-fe-disabled
So ist die einzige Option, wenn Sie benötigen konzentriert sich dieser Elemente zu ermöglichen, nicht disabled
Attribut überhaupt zu benutzen. Sie können stattdessen die Klasse .disabled
verwenden und die Schlüsselereignisse binden, um die Bearbeitung des Werts zu unterdrücken.
Sie bereit sind, Unter der Annahme, vorübergehend das deaktivierte Element zu ermöglichen (also es beschreibbar machen), kann dies durch die Überprüfung erfolgen, ob die next element die disabled
attribute mit hasAttribute()
hat. Wenn dies der Fall ist, können Sie dieses Attribut in false
ändern, bevor die keydown
true
zurückgibt, und somit wird die keyup
Registerkarte auf das deaktivierte Element.
Zusätzlich können Sie ein neues Attribut wasDisabled
setzen, mit dem Sie dann gegen $(this)[0]
überprüfen können. Wenn das Element diese Klasse hat, können Sie das Element erneut deaktivieren, sobald Sie es erneut ablegen.
Dies kann in der folgenden jQuery Beispiel zu sehen:
$('input').on('keydown', function(e) {
if (e.keyCode == 9) {
if ($(this).next()[0].hasAttribute('disabled')) {
$(this).next().attr('disabled', false);
$(this).next().attr('wasdisabled', true);
}
if ($(this)[0].hasAttribute('wasdisabled')) {
$(this).attr('disabled', true);
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input>
<input disabled>
<input>
hoffe, das hilft! :)
Ja, aber Sie können immer noch an dieses Element schreiben, das ist wahrscheinlich nicht das, wonach OP fragt. Ich habe deine Antwort zuerst falsch gelesen, dachte, du würdest es wieder deaktiviert machen, sobald du darauf zugegriffen hast, aber dann verlierst du den Fokus, richtig? –
Ja, du würdest den Fokus leider verlieren, wenn du ihn deaktivierst ** während ** er gerade fokussiert war. Allerdings habe ich die Antwort erweitert, um es wieder zu deaktivieren, sobald Sie es ablegen, was wahrscheinlich so nah wie möglich ist. Das Element kann nicht an einem deaktivierten Punkt angeklickt werden, und es kann nur durch das Tabbing vom vorherigen Element aktiviert werden. –
Ich landete es auf eine schreibgeschützte Eigenschaft. Das readonly erlaubte mir, zu ihm zu tappen und mich darauf zu konzentrieren, während ich es nicht eintippen konnte, bis die Unschärfe und die Änderung vervollständigt wurden.
- 1. Behat - Senden Sie TAB keypress
- 2. Ein KeyPress-Event weiterleiten
- 3. Stop keypress event
- 4. disable keypress event on event change
- 5. pyqt keypress event in lineedit
- 6. Tab State Control AngularJs
- 7. Event Control Funktioniert nicht?
- 8. EXTJS OnClick Tab Event
- 9. iMacros EVENT-Modus funktioniert während KEYPRESS nicht
- 10. machen multiple keypress event kürzer vb.net
- 11. UWP Template Control mit Event Handler
- 12. Wie feuert Tab-Key-Event?
- 13. Panel Control Paint Event funktioniert nicht für User Control
- 14. mit keypress()
- 15. WPF Tab Control: Wie bekomme ich den aktuell ausgewählten Tab?
- 16. Jquery keypress() Ereignis fängt Tab nicht ein Schlüsselcode
- 17. Javascript keypress in keypress
- 18. Link im neuen TAB (WebBrowser Control) öffnen
- 19. Automatisches Auffüllen von Feldern basierend auf einem einzelnen Feld auf Tab Out oder Keypress
- 20. Wie interpretiere ich eine Enter KeyPress als Tab in C#
- 21. jQuery: Wie die TAB keypress innerhalb einer Textbox
- 22. Hinzufügen von Click Event zu AxVlc Control?
- 23. Warum KeyPress Event in PyQt funktioniert nicht für Key Enter?
- 24. Responsive Sidebar Tab und Click Event Toggle
- 25. ASP.NET Login Control - Schutz vor SQLi mit Authenticate Event?
- 26. Python Tkinter Keypress Sonderfälle
- 27. Keypress simulieren mit jQuery
- 28. Trigger Keypress mit jQuery
- 29. Ajax Control Toolkit TAB-Komponente - Javascript bricht es?
- 30. KeyPress Ereignisbehandlung in reacts
Ich glaube nicht, dass Sie sich auf ein deaktiviertes Element wie dieses konzentrieren können. aber vielleicht können Sie umgehen, indem Sie eine "deaktivierte" CSS-Klasse erstellen, anstatt sie tatsächlich zu deaktivieren. Es sieht für den Benutzer deaktiviert aus, aber die Registerkarte funktioniert weiterhin. –
BTW, Ihre Frage ist ein wenig verwirrend. Ein Codebeispiel wäre hilfreich. –