it-swarm.com.de

select2 erzwinge den Fokus beim Laden der Seite

Ich versuche, ein select2-Feld beim Laden der Seite im fokussierten -Zustand anzuzeigen. Ich habe folgendes versucht:

$('#id').select2('focus');
$('#id').trigger('click');
$('#id').trigger('focus');

Nur die erste Zeile scheint eine Wirkung zu haben und fokussiert das select2-Feld. Es ist jedoch ein zusätzlicher Tastendruck erforderlich, um das Suchfeld anzuzeigen und die Eingabe der Suchzeichenfolge zuzulassen.

Wenn Sie also die Seite laden und mit der Eingabe von "Suchen" beginnen, öffnet das "S" das Suchfeld, und der Rest der Schlüssel wird in das Suchfeld eingegeben. Sie suchen also nach "earch".

43
user984976

Laut der Select2-Dokumentation: 

$('#id').select2('open');

Sollte alles sein, was Sie brauchen.

Gefunden unter Programmatic Access in der Dokumentation .

110
Dan-Nolan

Dies funktioniert in Version 3.4.2. Nicht sicher, wann es genau implementiert wurde.

$('#id').select2('focus');
28
keaplogik

Select2 erstellt eine eigene Eingabe, versuchen Sie es also folgendermaßen:

$(window).load(function(){
  $('#id').prev('.select2-container').find('.select2-input').focus();
});
9
Mottie

Wenn du benutzt:

$('#id').select2('open');

Das select2 wird geöffnet und Sie können direkt zur Suche tippen.

Wenn du benutzt:

$('#id').select2('open').select2('close');

Der Fokus wird auf die erstellte Dropdown-Liste select2 gesetzt. Wenn Sie Enter oder Ctrl + Arrow down auf Ihrer Tastatur drücken, können Sie es öffnen.

Ist persönlich der Meinung, dass dies besser ist als:

$('#id').select2('focus');

weil Sie die select2-Dropdown-Liste nicht wirklich mit Ihrer Tastatur öffnen können.

8
Ralph Jansen

Das hat bei mir funktioniert, und es hat auch den blinkenden Cursor in das Eingabefeld gestellt. Bestellung zählt!

$('#s2id').select2('focus');
$('#s2id').select2('open');
2
Elon Zito

Wir hatten ein Textfeld als select2 und verwendeten den folgenden Ausschnitt, um den Cursor in der Texteingabe zu aktivieren und zu fokussieren. Alle anderen Optionen funktionierten nicht für uns, da sie nur die select2-Optionen öffneten, jedoch nicht das erwartete Verhalten zeigten.

$('#s2id_autogen1').click()
$('#s2id_autogen1').focus()

0
NielsH

Gemäß der select2-Dokumentation: 

$('document').ready(function(){
   var opencustomer = $("#changedatachange").select2();
   opencustomer.select2("open");
});
0
HARDIK

Bei Select2 4.0 führt die Methode .select2 ('focus') nichts aus. Meine Problemumgehung bestand jedoch darin, das Element "span" mit dem Attribut "aria-labelledby" zu erhalten (beachten Sie, dass der Wert id-basiert ist, also irgendwie einzigartig), und konzentrieren Sie sich darauf:

var $field = $('select');
$field.select2();
var id = $field.attr('id');
var $spanLabel = $field.next().find("span[aria-labelledby='select2-" + id + "-container']");
$spanLabel.focus();
0

Von Dan-Nolan bereits gut beantwortet, aber für diejenigen, die Select2 noch nicht kennen: Ein kleines Objekt muss beachtet werden: Das HTML-Objekt muss mit select2 initialisiert werden, bevor seine Funktionen aufgerufen werden:

der endgültige Code sollte also sein

$('#id').select2();

$('#id').select2('open');
0
Kadeer Mughal

Bei Select2 4.0.2 habe ich ein Problem mit Select2 ('Fokus'). Die Liste sieht wie konzentriert aus, aber wenn ich die EINGABETASTE drücke, wird die Liste nicht geöffnet.
Für mich ist das die Lösung.

$('#id').select2();
$('.select2-selection', $('#id').next()).focus();
or
$('#id').next().find('.select2-selection').focus();
0

Ich habe die anderen 2 Antworten ausprobiert, hatte aber nicht viel Glück, vielleicht weil ich die Kontrolle über Json fülle und am Anfang ist es nur eine versteckte Eingabe, so dass die programmatische open -Methode keine Wirkung hatte. 

Folgendes hat mir jedoch gut getan: 

$(document).ready(function() 
{     
    $('#s2id_autogen1').focus();
});

Wenn aus irgendeinem Grund nicht die gleiche ID in Ihrem Setup angezeigt wird, suchen Sie nach dem Steuerelement, an das die select2-focusser - Klasse angehängt ist.

0
gts