validation d'un form avec condition 1 et/ou 2

validation d'un form avec condition 1 et/ou 2 - HTML/CSS - Programmation

Marsh Posté le 28-12-2008 à 17:38:15    

bonjour, voila j'ai un simple formulaire et pour poster et le valider j'ai mis en place un petit script mais apparemment j'ai du raté un truc parce que ça marche pas...
Pour faire simple je dois saisir un nom, un auteur et soit un fichier et/ou soit un texte mais vérifier qu'aucun des cas ne passent si les 2 sont vides.
or d'après le peu que je connaisse en javascript sur les structure conditionnelle if ((condition1)||(condition2)) exécutera les instructions si l'une ou l'autre des deux conditions est vraie ; hors là ça ne fonctionne déjà pas et ça ne correspond pas à ce que je souhaite ce serait plus du genre et/ou (&&||) :(
 

Code :
  1. <script language="Javascript">
  2. <!--
  3. function valideForm(form) {
  4.   if (form.name.value.length == "" ) {
  5.     alert('Merci de saisir un nom !\n\n');
  6.     return false;
  7.   }
  8.   if (form.author.value.length == "" ) {
  9.     alert('Merci de saisir un auteur !\n\n');
  10.     return false;
  11.   }
  12.   if ((form.nomfichier.value.length == "" )||(form.textes.value.length == "" )){
  13.     alert('Veuillez saisir ou le nom du fichier ou le texte !\n\n');
  14.     return false;
  15.   }
  16.   return true;
  17. }
  18. // -->
  19. </script>
  20. <form name="form1" method="post" action="do_upload.php" enctype="multipart/form-data"  onSubmit="return valideForm(this)">
  21. <table border="0" summary="">
  22. <tr>
  23.  <td class="input_box2">NAME</td>
  24.  <td class="input_box2">AUTHOR</td>
  25.  <td class="input_box2">FILE</td>
  26.  <td></td>
  27. </tr>
  28. <tr>
  29.  <td><input type="text" name="name" size="60" class="input_box"></td>
  30.  <td><input type="text" name="author" size="20" class="input_box"></td>
  31.  <td><input type=file name="nomfichier" size="30" class="input_box"></td>
  32.  <td></td>
  33. </tr>
  34. <tr>
  35.  <td class="input_box2">texte</b></td>
  36.  <td colspan="3"><textarea name="textes" cols="54" rows="10" wrap="virtual" class="input_box5"></textarea></td>
  37. </tr>
  38. <tr>
  39.  <td><input type="submit" name="Submit" value="Submit" class="input_box"></td>
  40. </tr>
  41. </table>
  42. </form>


je sèche un peu là est ce que vous auriez une idée ?
merci d'avance


Message édité par shubnigg le 28-12-2008 à 17:40:01
Reply

Marsh Posté le 28-12-2008 à 17:38:15   

Reply

Marsh Posté le 28-12-2008 à 18:09:05    

Tu veux dire seulement si l'une des deux conditions est vraie ?
Alors tu dois utiliser l'opérateur XOR.
Celui ci n'existe pas en JS, il faut simuler son comportement.
Lien google :
http://www.howtocreate.co.uk/xor.html
;)

Reply

Marsh Posté le 28-12-2008 à 19:19:51    

Je vais aller voir cette commande, merci .
En même temps je comprend pas que le code ci dessous ne fonctionne pas :(

Code :
  1. if ((form.nomfichier.value.length == "" )||(form.textes.value.length == "" )){
  2.      alert('Veuillez saisir ou le nom du fichier ou le texte !\n\n');
  3.      return false;


en effet que je remplisse l'un ou l'autre des champs j'ai toujours le message d'alerte

Reply

Marsh Posté le 28-12-2008 à 19:24:46    

essaye çà :
 

Code :
  1. if ((form.nomfichier.value.length == 0)||(form.textes.value.length == 0 )){
  2.     alert('Veuillez saisir ou le nom du fichier ou le texte !\n\n');
  3.     return false;

Reply

Marsh Posté le 28-12-2008 à 19:38:45    

Non pareil quoi que j'entre j'ai toujours la boiter d'alerte.
Mais si j'entre une valeur dans nomfichier et textes là cela passe...
On dirait qu'il voit cela comme une condition &&

Reply

Marsh Posté le 28-12-2008 à 19:41:25    

ah non je suis bete c'est normal
Regarde, tu vérifies si un d'entre eu est vide : si oui, tu affiches la boite de dialogue. Donc si un seul d'entre eux est vide alors c'est normal que la boite s'affiche !

Reply

Marsh Posté le 28-12-2008 à 19:46:35    

Heu...
ça m'embrouille là... ;)
En faite le but c'est de savoir si un des 2 est pleins ou les 2 mais si les 2 sont vides il faut faire l'alerte sinon on envoie le form.  
Donc d'après ce que tu dis il faudrait que je regarde s"ils sont différents de vides c'est ça ?

Reply

Marsh Posté le 29-12-2008 à 15:25:18    

bah, oui, et là tu n'as même pas besoin de xor.
Ton problème est super simple à résoudre :
 
si texte vide && fichier vide => alert !

Reply

Marsh Posté le 29-12-2008 à 17:28:13    


 
Exact c'est plus simple :)
 

Code :
  1. if ((form.nomfichier.value.length == "" )&&(form.textes.value.length == "" )){
  2.        alert('Veuillez saisir ou le nom du fichier ou le texte !\n\n');
  3.        return false;
  4.     }


Je cours tester cela ;)
ps : merci beaucoup

Reply

Marsh Posté le 29-12-2008 à 19:47:20    

compare plutot à 0 je crois que c'est le plus fiable :/ à confirmer :/

Reply

Sujets relatifs:

Leave a Replay

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