Forum Clubic

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