Confirm() sur un bouton submit : stopper l'execution si clic sur "annuler"

Répondre
burnedsoul
le 23/01/2008 à 16:10
burnedsoul
Bonjour à tous.
Une nouvelle problématique ^^
J'ai un bouton submit qui valide un formulaire.
Seulement j'aimerais y adjoindre une confirmation, que j'effectue via "confirm()" qui m'affiche une boite de dialogue avec "OK" ou "Annuler".

if (confirm("Etes vous sûr ?")) submit();
else // Empêcher le submit ???


Le souci c'est que j'ai besoin de tester si mon bouton subit à été isset en PHP (via if (isset($_POST['bouton'])) ... actions)
sinon j'aurais utilisé un bouton ^^

Donc comment effectuer un "break" afin d'éviter le submit du formulaire si je click sur annuler ?

Ou sinon, auriez vous une solution alternative qui permet de tester le click sur un bouton via un isset PHP ? Dans ces cas là j'utiliserais biensûr un <input type='button'> ^^

Merci d'avance ^^
Webmaster de Clikmag http://www.clikmag.fr
LA GLOBULE
le 23/01/2008 à 17:10
LA GLOBULE
Personnellement, je fais ainsi :

confirmation = confirm('Etes vous sur  ?');
if (confirmation) {
// bla bla
}


Et pas de else donc.
diablo
le 23/01/2008 à 17:16
diablo
moi je fais un type=button, plutot qu'un submit, et je valide le formulaire manuellement.

Par contre quand le js est off :s
.:[ UTB ]:. Diablo xo0 Au royaume des aveugles, les bornes sont rois...
burnedsoul
le 23/01/2008 à 17:31
burnedsoul
La présence du JS est rendue "obligatoire" dans mon appli, donc pas de souci de ce côté là.

Comment j'ai précisé plus haut, je dois tester le isset du bouton, voilà pourquoi j'utilise le submit :s

Pour LaGlobule, lorsque je test si le bouton est isset, même lorsqu'il click sur annuler, le bouton est isset (puisqu'il a submit le formulaire), du coup c'est pas bon :s

Une autre idée ?
Merci en tout cas ^^
Webmaster de Clikmag http://www.clikmag.fr
LA GLOBULE
le 24/01/2008 à 01:23
LA GLOBULE
Je comprend rien à ton histoire de isset, on fait du javascript la non ?

Chez moi, ce que je t'ai passé fonctionne sur un lien.
Il faudrait que tu nous montres ton HTML. Tu fais ça sur un onclick ?
LupusMic
le 25/01/2008 à 02:49
LupusMic
Où est la difficulté ?

<form onsubmit="return confirm('T\'es sûr coco ?')"></form>


Bien évidemment, s'il faut faire plus de tests :
<form onsubmit="return testAtSubmit(this)"></form>


Avec une fonction javascript qui prend en paramètre un DOMElement (FormElement plus précisément) et retourne true ou false selon que les tests se passent bien ou non.

À savoir que je ne suis pas partisan de la méthode qui consiste à utiliser les attributs on*. Pour des raisons de visibilité principalement. Je préfères privilégier un gestionnaire d'événements. Plus propre et plus puissant.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
burnedsoul
le 28/01/2008 à 15:27
burnedsoul
Ouaip en effet je fais ça "salement" sur un onclick() ^^

Je suis intéressé par cet histoire de gestionnaire d'évènements. Là où je pêche, c'est comment le mettre en place, notamment, comment simuler un "observateur" qui va remplacer ces on* ?
Webmaster de Clikmag http://www.clikmag.fr
burnedsoul
le 28/01/2008 à 15:33
burnedsoul
Désolé pour le double post, dommage qu'on ne puisse pas éditer :s

Pour faire court et simple. J'ai un formulaire à renseigner de façon dynamique.

En gros une suite de select qui lorsqu'elle sont renseignées vont permettre de construire d'autres select.
Le formulaire fonctionne selon des "billets" que l'on ajoute/supprimme à loisir afin d'effectuer une liste de billets que l'on valide à la fin.

Genre une select avec une liste de marques automobiles, qui va ensuite permettre d'aller chercher uniquement les autos de marque Ford par exemple.
Cela fait un billet, maintenant on peut, ou non, ajouter un autre billet concernant un autre véhicule.

Du coup mon formulaire général est souvent submitté. Et pour corser le tout, il faut que certains paramètres du billet obéisse à plusieurs contraintes (impossible de valider la liste de billets si l'on est en train de créer un billet, pas possible de valider un billets si certaines conditions ne sont pas remplies, etc ...)

Actuellement, je trouve mon système très barbare bien que fonctionnel, et j'aimerais grandement l'améliorer par la suite, là j'ai du "bricoler" par contrainte de temps :s
Webmaster de Clikmag http://www.clikmag.fr
Keika
le 23/07/2008 à 13:30
Keika
yop,

mon premier essai reel en javascript et j'essaye de faire la meme chose, mais sur un lien. Histoire de bien etre sur lorsque j'efface des donnees.

Voici ce que j'ai pour le moment:

news.php
<?php

echo '<a href="./scripts/traitement.php?news&amp;effacer='.$id[$j].'"
title="Effacer cette entr&eacute;e" onclick="javascript:alerteEffacement(\''.affichage_bdd($titre[$j]).'\');return false;">
<img src="./img/ico/news_delete.png" alt="effacer" /></a>' ;

?>


JS
//Declaration de la fonction
function alerteEffacement(valeur){

//On definit la question
var question = 'Etes-vous sur de vouloir supprimer la news '+ valeur ;
var confirmation = confirm(question) ;

//La question est validee
if(confirmation = true){

//MON SOUCIS ICI

}
}


Alors mon probleme est que je ne vois pas comment dire a javascript de laisser le navigateur suivre le lien quand la confirmation est valide... j'ai essaye avec un window.location = this.href ; mais il ne reconnait pas le href, ennuyant...

Merci d'avance
Le PHP --> C'est dur !
LupusMic
le 23/07/2008 à 14:14
LupusMic
Ne cherche pas midi à quatorze heure !
<a href="./scripts/traitement.php?news&amp;effacer='<?php echo $id[$j] ; ?>"
title="Effacer cette entr&eacute;e"
onclick="return confirm('Effacer \'<?php echo $titre[$j] ?>\' ?') ;"
><img src="./img/ico/news_delete.png" alt="effacer" /></a>


Ceci dit, l'effacement d'une ressource via une requête $_GET est une très mauvaise idée, qu'il faut bannir. Il faut passer les action telles que la suppression, la modification et la création (bref les opérations d'écriture) via des variables HTTP POST. La raison en est que sinon le site est sensibles aux attaques du type XSS (cross site scripting). Un petit malin peu cacher un lien dans sa page, ou t'envoyer un lien piégé, qui permet d'effacer ce qu'il souhaite, sans que tu ne t'en rende compte.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre
LoadingChargement en cours