J'ai ce code:
function THEME_form_user_login_alter (&$form, &$form_state){
$form['actions']['submit']['#ajax'] = array(
'callback' => 'ajax_process_form',
'wrapper' => 'user-login',
'effect' => 'fade',
'speed' => 'fast',
'method' => 'replace'
);
};
Cela fonctionne lorsque je clique sur le bouton Soumettre, mais quand j'appuie Entrée Ajax ne se déclenche pas. Y a-t-il un moyen autour de cela?
EDIT: J'ai essayé d'activer Ajax sur tous les champs et de définir la touche à true, mais un seul champ est envoyé pour que je reçois une erreur car le script de processus de formulaire s'attend à deux champs.
Je n'ai pas essayé cela, mais vous devriez pouvoir définir l'événement sur Ajax pour inclure le clavier:
function THEME_form_user_login_alter (&$form, &$form_state){
$form['actions']['submit']['#ajax'] = array(
'callback' => 'ajax_process_form',
'wrapper' => 'user-login',
'effect' => 'fade',
'speed' => 'fast',
'method' => 'replace'
'event' => array('click', 'keydown'),
);
}
Je ne sais pas comment bien keydown
fonctionnera sur un bouton d'envoi, vous voulez généralement quelque chose de plus complexe qui veille à ce que la clé correspondante soit Enter
. Sinon, vous pourriez attraper le Enter
Soumettez-vous et prévenir les défaillances (Soumettre le formulaire) et cliquez sur le bouton vous-même. Cela déclencherait l'appel Ajax comme s'il était cliqué et conserverait le Drupal Powered AJAX intact, ce qui facilite la gestion du côté serveur.