web-dev-qa-db-fra.com

Ajax Formulaires soumis avec Entrée

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.

2
silkAdmin

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.

1
googletorp