Auto-submit een Drupal formulier

12 mei 2015

Als je in Drupal een formulier bouwt met de Form Api plaats je over het algemeen een knop onderaan het formulier om het formulier te versturen. Het kan nodig zijn om een formulier automatisch te laten versturen als er iets in het formulier is aan of uitgevinkt. Dit doe je door een beetje javascript toe te voegen die gebruik maakt van een Onchange event.

Vervang ID-VAN-HET-FORMULIER door de HTML id van het formulier.


$input = drupal_get_query_parameters();
$form = array();
$form['alles_tonen'] = array(
  '#type' => 'checkbox',
  '#title' => 'Alles tonen',
  '#default_value' => isset($input['alles_tonen']),
  '#attributes' => array('onChange' => 'document.getElementById("ID-VAN-HET-FORMULIER").submit();'),
);

Als de elementen in het formulier allemaal van auto-submit zijn voorzien is een versturen knop onderaan het formulier niet meer nodig. Deze knop kan met javascript verborgen worden.


$form['submit'] = array(
  '#type' => 'submit', 
  '#value' => 'Versturen',
  '#suffix' => '<script type="text/javascript">document.getElementById("edit-submit").style.visibility = "hidden";</script>',
);

Er is een reden dat we de knop met javascript verbergen en niet gewoon de Drupal code weghalen. Als een gebruiker geen javascript heeft willen we dat de knop getoond wordt. Omdat de auto-submit zonder javascript niet werkt, moet de gebruiker het formulier versturen met de knop.