Endlos-Schleife bei Text-Element mit Ajax-Callback auf Event blur oder focusout

Wenn ein Drupal-Textfeld (input-Feld) einen Ajax-Callback verwendet und dieser auf die Events blur oder focusout reagiert, kann es zu einer Endlos-Schleife des Fokus-Verhaltens des Text-Felds kommen.

Der Ajax-Callback setzt den Fokus automatisch zurück auf das Feld welches das Ajax-Event (blur bzw. focusout) ausgelöst hat. Damit kommt es quasi zu einer Endlos-Schleife, in der der Fokus immer wieder auf dem Text-Feld landet und man nicht weiter im Formular navigieren kann.

Es gibt einen undokumentierten Parameter für den Ajax-Callback der dieses Verhalten aufheben kann:

Den Parameter "disable-refocus" auf true setzen.

$form['textfeld']['#ajax'] = [
  'callback' => 'Drupal\my_module\Form\MyForm::ajaxfunction,
  'event' => 'blur',
  'disable-refocus' => TRUE,
  'progress' => [
    'type' => 'throbber',
    'message' => t('Message'),
  ]
];

Diskutiert wird das Ganze hier: https://www.drupal.org/project/drupal/issues/2627788

Neuen Kommentar schreiben

Filtered HTML

  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Zulässige HTML-Tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • HTML - Zeilenumbrüche und Absätze werden automatisch erzeugt.
  • To post pieces of code, surround them with <code>...</code> tags. For PHP code, you can use <?php ... ?>, which will also colour it based on syntax.

Plain text

  • Keine HTML-Tags erlaubt.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • HTML - Zeilenumbrüche und Absätze werden automatisch erzeugt.