Bloquer envoi de Formulaire

Bloquer envoi de Formulaire - HTML/CSS - Programmation

Marsh Posté le 20-10-2006 à 17:09:17    

Bonjour à tous !
J'ai un formulaire avec trois choses à choisir (par boutons radios à chaque fois).
Je souhaiterais que si l'utilisateur clique sur le bouton d'envoi de formulaire sans avoir choisi l'une des trois choses, cela ne fonctionne pas et une alerte apparaisse !
Merci de m'aider ^^
Excellente soirée à vous !

Reply

Marsh Posté le 20-10-2006 à 17:09:17   

Reply

Marsh Posté le 20-10-2006 à 21:55:56    

et si l'utilisateur n'a pas JS d'activé tu fais comment [:moule_bite]

Reply

Marsh Posté le 21-10-2006 à 13:13:47    

Si il l'a d'activé, comment faire ?
Personne sait pour ma question ?

Reply

Marsh Posté le 21-10-2006 à 13:14:51    

file le code HTML  
le JS viendra ensuite :o

Reply

Marsh Posté le 21-10-2006 à 13:20:31    

<form name="formulaire" method="post" action="tel2.php" onSubmit="return disableForm(this);">
<input type="radio" name="gain" value="1">
            <input type="radio" name="gain" value="2">
            <input type="radio" name="gain" value="3">
 
              <input type="radio" name="mode" value="1">
<input type="radio" name="mode" value="2">
<input type="radio" name="mode" value="3">
 
<input type="submit" name="Submit" value="Lancer Envoi" STYLE="font-size:10px;">

Reply

Marsh Posté le 21-10-2006 à 13:36:19    

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <title></title>
  5. <script type="text/javascript">
  6. function checkForm(form) {
  7.  var radioNames=[];
  8.  var radioCheck=[];
  9.  var inp = form.getElementsByTagName("input" );
  10.  //récupère tous les noms communs des boutons radios
  11.  for (var i=0; i<inp.length; i++) {
  12.   var x = inp[i];
  13.   if (x.type=="radio" && !inArray(radioNames,x.name)) {
  14.    radioNames.push(inp[i].name);
  15.    radioCheck.push(false); //tableau contenant le check pour savoir si un groupe de boutons radio a été coché
  16.   }
  17.  }
  18.  //on parcoure maintenant le tableau des noms et à chaque fois on va parcourir tous les inputs et les checker
  19.  for (var i=0; i<radioNames.length; i++) {
  20.   for (var r=0; r<inp.length; r++) {
  21.    var x=inp[r];
  22.    if (x.type=="radio" && x.name==radioNames[i] && x.checked) {
  23.     radioCheck[i]=true;
  24.    }
  25.   }
  26.  }
  27.  //maintenant on retourne regarde si tout radioCheck est à true, sinon on alert
  28.  for (var i=0; i<radioCheck.length; i++) {
  29.   if (radioCheck[i]==false) {
  30.    alert("vous n'avez pas sélectionné l'une des trois choses :o" );
  31.    return false
  32.   }
  33.  }
  34.  return true;
  35. }
  36. function inArray(array, str) {
  37.  for (var i=0; i<array.length; i++) {
  38.   if (array[i]==str) return true;
  39.  }
  40.  return false;
  41. }
  42. </script>
  43. </head>
  44. <body>
  45. <form name="formulaire" method="post" action="tel2.php" onsubmit="return checkForm(this);">
  46. <input type="radio" name="gain" value="1">
  47.             <input type="radio" name="gain" value="2">
  48.             <input type="radio" name="gain" value="3">
  49.               <input type="radio" name="mode" value="1">
  50. <input type="radio" name="mode" value="2">
  51. <input type="radio" name="mode" value="3">
  52. <input type="submit" name="Submit" value="Lancer Envoi" style="font-size:10px;">
  53. </form>
  54. </body>
  55. </html>


Edit : 10 minutes pour coder ça :/  :cry:


Message édité par gatsu35 le 21-10-2006 à 13:37:23
Reply

Marsh Posté le 21-10-2006 à 13:50:58    

Merci infiniment ça fonctionne !
C'est + que de l'aide là donc un second Merci !

Reply

Marsh Posté le 21-10-2006 à 16:26:03    

Il faut surtout faire la même chose côté serveur...

Reply

Marsh Posté le 21-10-2006 à 16:54:01    

FlorentG a écrit :

Il faut surtout faire la même chose côté serveur...


BAh pourquoi si l'utilisateur peut pas envoyer le formulaire s'il est mal remplit  :bounce:

Reply

Marsh Posté le 21-10-2006 à 17:17:02    

leflos5 a écrit :

BAh pourquoi si l'utilisateur peut pas envoyer le formulaire s'il est mal remplit  :bounce:


Ca c'est ce que tu crois [:itm]

Reply

Marsh Posté le 21-10-2006 à 17:17:02   

Reply

Marsh Posté le 21-10-2006 à 18:34:21    

FlorentG a écrit :

Il faut surtout faire la même chose côté serveur...


D'où mon premier post [:petrus75]

Reply

Marsh Posté le 26-10-2006 à 05:57:48    

FlorentG a écrit :

Ca c'est ce que tu crois [:itm]


C'était ironique [:itm]

Reply

Marsh Posté le 26-10-2006 à 08:46:49    

Gatsu>j'aime beaucoup ton code mais je vois pas l'intérêt de faire 2 tableaux ( radioName et radioCheck). Perso j'aurais fait une table de hashage nom:checked.
Ah et pis tu as la fonction indexOf de l'objet tableau plutot que inArray et là je sais ce que tu va me dire: "ouais mais c'est du javascript1.6 et ça marche pas sous IE". Certes mais temps qu'à la ré-écrire ....

Reply

Marsh Posté le 26-10-2006 à 09:30:23    

anapajari a écrit :

Gatsu>j'aime beaucoup ton code mais je vois pas l'intérêt de faire 2 tableaux ( radioName et radioCheck). Perso j'aurais fait une table de hashage nom:checked.
Ah et pis tu as la fonction indexOf de l'objet tableau plutot que inArray et là je sais ce que tu va me dire: "ouais mais c'est du javascript1.6 et ça marche pas sous IE". Certes mais temps qu'à la ré-écrire ....


Jvais passer pour un con, mais je vois pas comment on les ecrit dynamiquement les table de hashage [:petrus75]

Reply

Marsh Posté le 26-10-2006 à 09:49:57    

Code :
  1. var radioHash = new Array();
  2. for (var i=0; i<inp.length; i++) {
  3.   if (inp[i].type=="radio" &&  radioHash[inp[i].name] == undefined) {
  4.     radioHash[inp[i].name]] = false;
  5.   }
  6. }


et zou :o ( du coup t'as même plus besoin de la fonction inArray ou indexOf)


Message édité par anapajari le 26-10-2006 à 09:50:34
Reply

Marsh Posté le 27-10-2006 à 00:52:58    

Je pense qu'il n'est pas nécessaire de préciser Hash dans le nom, vu que tout tableau est implicitement une table de hachage ?

Reply

Marsh Posté le 27-10-2006 à 08:54:05    

Je pense qu'il n'est pas nécessaire de faire des posts comme ça à une heure du matin, get a life :o
Mais tu as entierement raison, je savais juste pas quoi mettre :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed