Come si aggiunge l’evento onSubmit a un form, in Drupal 7?
Come inserire un controllo javascript al form di login?
A volte si deve aggiungere un evento javascript a un form, ad esempio per verificare i dati immessi nei campi in fase di login, in modo che venga chiamata una certa funzione javascript al momento dell’invio del form (evento onSubmit).
Una possibile soluzione, pulita e abbastanza facile, è quella di creare un proprio modulo e usare l’hook form_alter, che permette di interagire con i forms creati da Drupal e modificarli prima che vengano stampati a video.
Come usare la funzione form_alter per aggiungere una chiamata javascript all’evento onsubmit di un form:
Sapete come creare un modulo e come usare l’hook form_alter, adesso non resta che inserire la funzione desiderata nel modulo chiamato ad esempio “mioModulo”, in modo da aggiungere l’evento “onSubmit” all’intero form.
function mioModulo_form_alter (&$form, &$form_state, $form_id) {
$form['#attributes']['onsubmit'] = 'return myJavascriptFunction();';
}
Questa funzione non fa altro che aggiungere l’attributo “onSubmit” ai form generati da Drupal. L’attributo onSubmit nel nostro caso è una stringa che chiama la funzione javascript myJavascriptFunction () e ne restituisce il risultato.
Se la funzione restituisce false il form non viene inviato.
Notare che l’hook form_alter, ovvero la funzione inserita nell’esempio precedente, modifica tutti i forms generati da Drupal, quindi sarà necessario aggiungere almeno una riga di codice per filtrare l’ID del form in modo che si vada a modificare solo quello su cui vogliamo inserire il nostro evento.
In alternativa è possibile usare l’hook form_FORM_ID_alter, per maggiori informazioni leggi questo articolo.