2010-07-20 4 views
0

Dans un module personnalisé, je donne les résultats suivants (pour ajouter le javascript à une forme particulière):hook_form_FORM_ID_alter pas appelé après « Soumettre » ou « Preview » est cliqué

function mymodule_form_mynode_node_form_alter(&$form, $form_state) { 
    drupal_add_js(drupal_get_path('module', 'mymodule') . '/js/mymodule.js', 'module'); 
} 

Cette fonction ne s'appelle le formulaire est d'abord chargé (c'est-à-dire parcourir à http://myserver.com/node/add/mynode) mais cette fonction php n'est pas appelée lorsque le même formulaire est rechargé après que le formulaire a été invalidé (ie un champ obligatoire a été omis après avoir cliqué sur 'Envoyer' ou 'Prévisualiser').

Que dois-je faire pour que le fichier javascript soit ajouté après avoir cliqué sur 'Envoyer' ou 'Aperçu'?

Merci,

John

Répondre

0

La forme alter est appelée uniquement lorsque le formulaire est généré. Comme les formulaires sont mis en cache entre la requête, le même formulaire et déjà construit est utilisé pour l'envoi et la prévisualisation.

Vous devez vous assurer que votre code est appelé chaque fois que le formulaire est rendu. Comme indiqué par Googletorp, une façon de le faire est de use a custom form rendering function. Vous pouvez également le faire en attachant une fonction post ou pre-rendering à votre formulaire. En fait, la fonction de rendu personnalisée, pré ou post n'a pas besoin d'être pour le formulaire lui-même et peut être utilisée sur n'importe quel élément de formulaire. De préférence celui dont le comportement est modifié par le JavaScript.

1

Pour résoudre votre problème, vous aurez besoin de créer une fonction de thème de la forme où vous rendre le formulaire et ajoutez le fichier js.

Questions connexes