Une petite bricole en JS ou je bloque: le confirm() avec un formulaire

:hello: tous

Je bloque sur un petite betise de rien du tout.

J’ai un formulaire. Quand je clique sur valider (ça amène à une page de traitement des données), je lui demande d’afficher un petit confirm en JS pour s’assurer que l’utilisateur à bien tout fait comme il faut. Rien d’original quoi.

Sauf que si je clickouille sur « Cancel » (ou « Annuler » bien sur), vlà t’y pas qu’il arrive quand même sur la page de traitement des données ! :heink:

« Fichtre ! » me dis-je sur le coup !
Ce foutu confirm n’est pas censé justement confirmé… ou pas ! l’action ?

Que l’on appuis sur Ok ou Cancel, ça charge quand même la page de traitement.
Je pense que je ne sais tout simplement pas me servir du confirm du coup :slight_smile:

Voici le code (on ne peut plus simple madame !)

Le fichier du formulaire


<form method="POST" action="traitement.php">
<input type="checkbox" name="test" value="test" /><br />
<input type="checkbox" name="test2" value="test2" /><br />
<input type="checkbox" name="test3" value="test3" /><br /><br />
<input type="submit" value="Roulaiz" onClick="confirmValid()"/>
</form>

et le petit JS qui va bien à côté:


function confirmValid()
{
      confirm('Vérifiez qu'au moins une case soit bien cochée SVP !');
}

:paf:
Edité le 19/03/2008 à 16:53

En effet tu as oublié un petit quelque chose… La fonction confirm() en JavaScript return true pour le bouton « Ok » et false pour le bouton « Annuler »

Il suffit donc de faire :


function confirmValid()
{
  if(confirm('Vérifiez qu'au moins une case soit bien cochée SVP !'))
  {/*Valeur si Vrai*/}
  else
  {/*Valeur si Faux*/}
}

Dans ton cas je pense que juste un submit du formulaire pour la « valeur si Vrai » suffit :slight_smile: !
Edité le 18/03/2008 à 22:37

hum… c’est à dire ?

Car là, le submit est directement contrôlé dans la page HTML non ?

Oui, justement, tu as un bouton submit et tu cliques dessus : ton navigateur soumet le formulaire associé : c’est normal

Que tu aies du code JavaScript (ou autre) sur l’événement onClick (indiqué l’attribut « onClick » de ton ) ne change rien vu qu’il n’y a aucun lien entre ton HTML et ta fonction JS confirmValid().
Edité le 19/03/2008 à 01:27


D'ailleurs, il me semble qu'il existe un événement [i]onSubmit[/i].

Oui, c’est bien ce qu’il me semblait.

Comment puis-je éventuellement faire un lien dans ce cas ?

Ha pardon j’ai pas précisé, utilises une balise bouton :wink: !

Ou alors il faut mettre un évent onSubmit sur le formulaire et le traiter différemment si je ne m’abuse.

:ennuye: j’utilise déjà une balise bouton
C’est bien pour ça que ça marche pas :lol:

Je vais essayer avec l’évènement onSubmit :oui:

:non: tu utilises une balise type submit () et pas une type button ().

ah la feinte, je croyais que tu avais simplement traduit le submit :stuck_out_tongue:

Salut,
oui la ruse, c’est que le bout on de type « submit » utilise le retour de la fonction pour faire un submit, alors que le bouton classique il s’en fout.


function confirmValid()
{
// !! bien mettre le retour true ou false
    return confirm('Vérifiez qu'au moins une case soit bien cochée SVP !');
}

(sinon à la limite on peut utiliser un bouton classique, avec un form.submit() à la fin)

Hum… aurais-tu des références pour étayer tes dires ?
(et de quelle fonction parles-tu ?)

Mes référence c’est l’expérience jeune padawan :o
:ane:
non, sérieusement c’est sur le tas que j’ai vu ça,

mais en plus, il y a des erreurs de syntaxe!

quoiqu’il en soit, la version corrigée:


<html><head><title>test</title>
<script>
function confirmValid()
{
// alert('a malibu');
 return confirm("Veuillez vérifier qu'au moins une case soit bien cochée SVP !");
}
function confirmAndSubmit(){
if(confirmValid()){
  document.thatform.submit();
}
}
</script>
</head><body>

<form name="thatform" method="POST" action="traitement.php">
<input type="checkbox" name="test" value="test" /><br />
<input type="checkbox" name="test2" value="test2" /><br />
<input type="checkbox" name="test3" value="test3" /><br /><br />
<input type="submit" value="Roulaiz" onclick="return confirmValid();"/>
</form>
<input type="button" value="Soukaiz" onclick=" confirmAndSubmit()"/>


</body></html>

il faut faire un return dans la fonction (normal sinon on ne transmet pas le résultat) mais aussi dans le onclick.
il fallait utiliser des «  » pour utiliser un ’ à l’intérieur.

et j’ai fait les 2 version, avec submit, et avec button (privilégier le sumit si on veut que ça marche m^me javascript désactivé, et le button si on veut imposer l’utilisation de javascript)
:slight_smile:

ça marche parfaitement comme ça :super:

Merci bien à tous :slight_smile:

Cool :wink:
Raynor j’espère t’avoir convaincu aussi :slight_smile:

:non: Je veux un document listant les interactions possibles entre un et l’attribut OnClick :o

:o beserk :diable:
www.idocs.com…
www.w3schools.com…
www.w3schools.com…

C’est pas exactement ce que j’ai fait, mais sur tous les éléments, le onlick peut prendre une valeur retour fausse pour arrêter le traitement en cours: ouverture du lien sur un href, submit sur un bouton, on peut même le mettre sur le onsubmit du form dans le dernier exemple
:wink:

simple :


function verification()
{

var inputs = document.getElementsByTagName('input');

var confirmer = false;

for (i=0;i<inputs.length;i++)
{
 if(inputs[i].checked == true)
 {
     confirmer =  true;
 }
}

return confirmer;

}


Edité le 21/03/2008 à 17:32