Ich möchte den Fokus auf ein Formularelement setzen. Mit jQuery ist das so einfach, nur $('selector').focus
.Ein Element in Aurelia fokussieren
Ich habe eine einfache <input ref="xxx" id="xxx" type="text">
erstellt und in meiner .ts Datei füge ich eine Eigenschaft und verwenden Sie es hier:
attached() {
this.xxx.focus()
}
Nichts passiert. Beginne zu fühlen, dass einige einfache Dinge schwierig werden, was ich sicher nie der Punkt war.
(der ursprüngliche Anwendungsfall war in einem Bootstrap Zusammenbruch Fokus auf ein Formularelement zu setzen, wenn der Zusammenbruch, wie dies dargestellt ist:
// set focus to the first element when the add-cell collapse is shown
$('#collapsedAddTask').on('shown.bs.collapse', function() {
$('#AddTaskTitle').focus()
})
Das ist für meine grundlegenden HTML funktioniert (nicht einzelne Seite app) , aber nicht mit Aurelia. Was der Aurelia Weg ist?
aktualisieren die Antwort von Miroslav Popovic mit unten, und in den Kommentaren, habe ich es wie so (denken sie daran zu arbeiten, das ist eine Bootstrap Zusammenbruch Komponente):
<!-- the heading with an A that toggles visibility -->
<div class="panel-heading">
<a href="#collapsedAddTask" data-toggle="collapse" id="addTaskHeader" click.delegate="addTaskShown()">Add task</a>
</div>
<!-- the body, which is initially hidden -->
<div class="panel-body">
<div class="collapse" id="collapsedAddCell">
<input type="text" focus.bind="addTaskFocused">
<!-- more controls ... -->
</div>
</div>
Und wie würden Sie hören das Kollapsevent? Importieren Sie $ und verwenden Sie '$ ('# collapsedAddTask'). On ('show.bs.collapse', function() {....})' oder gibt es einen Aurelia-Weg? – specimen
Die Verwendung von jQuery ist eine Option.Ich glaube nicht, dass Sie einen Trigger an dieses Ereignis in Sicht binden können ('
), da es kein reguläres DOM-Ereignis ist ... Normalerweise wollen Sie alle DOM-bezogene Logik entweder mit jQuery oder mit einfachem DOM kapseln , zu benutzerdefinierten Elementen oder benutzerdefinierten Attributen. I.e. in diesem Fall können Sie benutzerdefinierte Element und haben so etwas wie 'Eine andere Idee ... Sie könnten das benutzerdefinierte Attribut "focus-child" erstellen Das würde dieses 'show.bs.collapse'-Ereignis behandeln und einen Fokus auf das erste Eingabeelement oder Element mit dem angegebenen ID-Wert setzen. Damit könntest du dieses Attribut einfach zu div hinzufügen - '
'. Mehr über benutzerdefinierte Attribute in Dokumenten - http://aurelia.io/docs#/aurelia/framework/1.0.0-beta.1.4/doc/article/cheat-sheet/8 –