Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'essaie de désactiver un bouton après sa validation, mais je ne vois pas comment faire avec Zend.
Lorsque je clique sur mon bouton, j'ai un traitement qui tourne quelques secondes, et donc certaines personnes (non patientes) clique plusieurs fois sur le bouton, et génère donc plusieurs transactions.
Auriez-vous une solution ?
D'avance merci.
Vince
Dernière modification par vince56 (15-03-2011 09:58:40)
Hors ligne
un javascript qui cache le bouton onclick ?
Hors ligne
à savoir que le bouton est un élément zend_form, alors comment appliquer le javascript ?
merci
Hors ligne
zf c'est du php, cela générère éventuellement du html ou autre, mais cela se pratique côté serveur... là tu parle d'un comportement côté client, il te faut donc du javascript, récupère l'id, met un on submit ou autre
exemple :
$this->addElement('submit', 'submit' array(
'attribs' => array(
'onclick' => 'this.disable="disable"'
)
);
Hors ligne
oui je suis d'accord.
j'ai donc essayé cette solution :
$form->addElement('submit', 'submit', array( 'label' => 'Payer', 'attribs' => array('onclick' => 'form.disable="disable"')))
le bouton n'est pas désactivé ...
où me suis-je trompé ?
merci
Hors ligne
form.disable veux dire que tu désactive le formulaire ...
pour désactiver le bouton fait simplement this.disabled="disabled" ou alors c'est this.disabled=true je ne sais plus trop la syntaxe mais ton moteur de recherche préféré devrait t'aider
Hors ligne
ça ne marche pas non plus.
j'ai testé avec "onclick' => 'this.disable=true'" et onclick' => 'this.disable='disable' mais ça ne change rien, je peux toujours cliquer autant de fois que je veux sur mon bouton ...
Hors ligne
autant pour moi, la désactivation fonctionne désormais, mais le traitement n'est pas lancé ... lol
une idée ?
merci
Hors ligne
j'ai envie de dire : http://www.google.com/search?&q=jav … ble+button
essaye this.disabled=true; return true;
Hors ligne
Bonsoir,
est ce que tu post ton formulaire sur la même page ?
si oui :
// dans le contrôleur : ... if($this->_request->isPost() && $form->isvalid($this->_getAllParams())){ // traitement du formulaire // et $form->removeElement('submit); } ...
Si non, il te faut un flag quelque part pour savoir si le formulaire à bien été complété, dans ce cas, if($flag)
@grummfy : il me semble que l'on à déjà eu cette discussion :p http://www.z-f.fr/foru/viewtopic.php?id=6325
Hors ligne
de ce que j'ai compris il veux le désactivé au moment du post non par après ..
Hors ligne
Effectivement, mais la solution Zend reste applicable car au moment du retour sur la page plus de bouton.
Personnellement j'ai un cas avec plusieurs formulaires sur la même page et j'utilise JS/jQuery pour afficher les "submit" à mesure que les formulaires sont validés avec des champs hidden dans chaque formulaires qui me servent de flag.
Hors ligne
Bonjour,
comme je disais au départ, le problème est que j'ai des utilisateurs impatients et donc clique plusieurs fois sur le bouton car ils trouvent que cela ne va pas assez vite.
au premier clic, j'aimerais bloquer le clic sur le bouton pour éviter de lancer plusieurs fois le traitement.
Merci
Hors ligne
après test, la solution suivante fonctionne :
this.disabled=true; return true;
Merci Grummfy
Hors ligne
finalement, ça fonctionne sur mon poste, et sur le serveur, ça ne fonctionne pas ... le bouton devient inactif et aucune action .. et pas de message d'erreur ..
possible que javascript soit désactivé sur mon serveur ? (oui je ne le gère pas)
merci.
Hors ligne
Le javascript c'est coté client...
Hors ligne
ok mais j'exécute tout cela depuis mon poste ...
alors pourquoi ça fonctionne dans un cas, pas dans l'autre ?
Hors ligne
finalement, j'ai réussi sur mon 1er formulaire, mais en faisant la même chose sur le second (et dernier ...), ça ne fonctionne pas. je n'y comprends pas grand chose
Hors ligne