ajout de bouton impossible!! aidez-moi svp je vais perdre mon job

Catégories:

Bonjour @ tous
Je voulais utiliser le hook_form_alter pour altérer le formulaire de simplenews,un peu modifier en module maison ,en y ajouton un bouton «sendmail» de type button et non de type submit et y associer un événement onclick qui change la variable $hidden d’un champ caché de type hidden, par défaut nulle ,en l’affectant la valeur 1.
J’ai essayé pas mal de truc mais toujours le même problème puisque Drupal génère toujours un bouton de type submit ! et donc lorsque je clic c’est la validation du formulaire qui se fait.J’espère être clair et voici mon code utilisé dans mon .module

<?php
function custom_newsletter_form_alter(&$form, $form_state, $form_id) {
//une variable que je veux mettre à 1 lors du clic sur mon bouton
$hidden=0 ;
switch (
$form_id) {
case
‘newslettre_nouv_node_form’ :
//je veux créer un champ caché pour stocker la variable $hidden
$form [‘bid’] = array(#type’ => ‘hidden’, ‘#value’ => $hidden) ;
//mon bouton qui,une fois je clic sur,appelle la fonction modif_hidden qui met $hidden à 1
$form [‘buttons’][‘sendmail’] = array (#type’ => ‘button’, ‘#value’ => t ( ‘Send’ ),’#weight’ => 6,'#attributes' => array('onclick' => 'modif_hidden')) ;
break ;

}

}

/*  fonction qui fait appel à un fichier js que j’utilise pour mettre la variable $hidden à 1 comme condition de déclenchement d’envoie de mail */
function custom_newsletter_modif_hidden() {
//je met quoi?
}
?>

Merci de m’aider j’en ai vraiment besoin.

#

Simple : dans ta fonction javascript «modif_hidden», tu met un «return false;» à la fin

#

Merci Alkaaran pour ta réponse.Mais mon problème avant tout est d’avoir un bouton de type button et non pas de type submit.
Help me please !

#

Le submit peut être annulé par return false ; mais je ne sais pas si sur le onclick ça marche, pour être sûr il faut le faire sur un onsubmit du formulaire. Apres il suffit de faire un test sur le bouton qui a été cliqué :

$('#mon-form').submit(function(){
    if(monBoutonAjax.clicked)
        return false;
}

Syndiquer le contenu