Recherche de variable

Recherche de variable - HTML/CSS - Programmation

Marsh Posté le 01-09-2005 à 21:26:45    

Salut à vous!
Je cherche une variable me permetant de verfier plusieur champs d'un formulaire (pour cette page par exemple).
En gros une fonction qui m'eviterais de me taper 36 "if"
 
Merci d'avance  :jap:

Reply

Marsh Posté le 01-09-2005 à 21:26:45   

Reply

Marsh Posté le 02-09-2005 à 05:01:44    

Fais une boucle !
 

Code :
  1. var lesInputs = document.getElementsByTagName("input" );
  2. for (var i=0; i<lesInputs.length; i++) {
  3.    if(lesInputs[i]).value == "" ) {
  4.      alert("Remplis tous les champs tête de pioche" );
  5.    }
  6. }


 
Code non testé, mais tu vois l'idée...

Reply

Marsh Posté le 02-09-2005 à 09:13:52    

Peut-être serait-il bon d'en faire une fonction et d'ajouter un return dans le for sinon tu vas te retrouver avec autant que boites de message que de champs non remplis.
 
 

Code :
  1. function check_form() {
  2.   var lesInputs = document.getElementsByTagName("input" );
  3.   for (var i=0; i<lesInputs.length; i++) {
  4.      if(lesInputs[i]).value == "" ) {
  5.        alert("Remplis tous les champs tête de pioche" );
  6.        return false;
  7.      }
  8.   }
  9.   return true;
  10. }


 
Après tu n'as qu'à appeler ta fonction lors de la validation du formulaire :  
 

Code :
  1. <form action="..." method="..." onsubmit="return(check_form());" >


Message édité par j_lecruel le 02-09-2005 à 09:14:11

---------------
♈ ♋ ♌ ♍ ♎ ♏ - Agora Fidelio | Galerie d'art Toulousaine
Reply

Marsh Posté le 02-09-2005 à 17:04:28    

Je debut et je n'arrive pas à apliquer vos conseils dans mon formulaire. Un petit coup de pouce siouplé  :jap:  


Message édité par drake- le 06-09-2005 à 18:04:03
Reply

Marsh Posté le 06-09-2005 à 18:05:22    

up

Reply

Marsh Posté le 06-09-2005 à 18:44:31    

Envoie ton code...


---------------
♈ ♋ ♌ ♍ ♎ ♏ - Agora Fidelio | Galerie d'art Toulousaine
Reply

Marsh Posté le 06-09-2005 à 21:22:29    

c'est pour cette page http://mgteam.free.fr/MLT/Shaka/Inscription.html
Merci de ton aide :jap:

Reply

Marsh Posté le 06-09-2005 à 21:49:09    


  • Les tableaux sont inutiles (avec des labels, on peut taper son texte en cliquant sur le titre du champ, s'mieux) surtout pour une page aussi simple
  • Ajoute un élément permettant de savoir que le champ est obligatoire, je verrais bien un 'class="required"' sur chaque "input" obligatoire.
  • Ce qui permet de faire un JS tout con, du type

function checkRequiredInputs() {
    var validForm = true;
    var inputs = document.getElementsByTagName('INPUT');
    for(var i=inputs.length-1; i>=0; --i) {
        inputs[i].style.border = "";
        if(inputs[i].className.indexOf("required" ) != -1 && inputs[i].value=="" ) {
            inputs[i].style.border="2px solid red";
            validForm = false;
        }
    }
    return validForm;
}


testé sous Firefox en vitesse, fonctionne :o
 
Cette fonction:

  • Encadre en rouge les champs obligatoires non remplis (normalement [:pingouino])
  • retourne "true" si tous les champs obligatoire sont remplis, "false" dans les autres cas


Sachant que ce genre de trucs sert uniquement à améliorer la vie du client:

  • Il ne faut pas que ça sorte une popup ou autre truc à la con, ça lourde
  • Garde en mémoire que ce n'est pas une vérification 'réelle': c'est très facile de la désactiver ou d'envoyer des données autrement => tu DOIS effectuer une validation complète côté serveur.


Pour finir, charge à toi de l'améliorer, tu peux par exemple:

  • utiliser des classes pour manipuler les styles au lieu des styles inline, c'est plus propre
  • enregistrer les noms des champs invalides pour en faire la liste
  • gérer les champs non textuels (selects par exemple)


edit: erreur de syntaxe
 
re-edit: Opera ne supporte pas "style.borderColor", et IE merde lamentablement mais je sais pas pourquoi
re-re-edit: la remise à 0 des bordures (inputs[i].style.border="" ) est comprise par MSIE comme une demande de supprimer les bordures [:sisicaivrai]
 
Donc faut se démerder pour extraire et conserver quelque part la bordure par défaut, pour pouvoir la remettre :o
Faut passer par currentStyle.border pour MSIE et getComputedStyle().border pour le reste, sauf Safari qui pige aucun des deux et peut aller se faire foutre [:pingouino]


Message édité par masklinn le 06-09-2005 à 22:11:38

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
Reply

Marsh Posté le 06-09-2005 à 23:16:13    

j'ai testé ta fonction , mais j'ai du me gouré quelque part...ca na pas l'effet esconté :'( ( à cause de IE?)
 
http://mgteam.free.fr/MLT/Shaka/Co [...] ption.html


Message édité par drake- le 06-09-2005 à 23:24:53
Reply

Marsh Posté le 06-09-2005 à 23:33:08    

Citation :

sauf Safari qui pige aucun des deux et peut aller se faire foutre [:pingouino]

 
 
Masklinn en force :D


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 06-09-2005 à 23:33:08   

Reply

Marsh Posté le 06-09-2005 à 23:38:00    

drake- a écrit :

j'ai testé ta fonction , mais j'ai du me gouré quelque part...ca na pas l'effet esconté :'( ( à cause de IE?)
 
http://mgteam.free.fr/MLT/Shaka/Co [...] ption.html


Citation :

<INPUT TYPE="text" NAME="pseudo" SIZE="16" 'class="required"'>


WTF [:pingouino]
 
Et c'est pas magique une fonction javascript hein, faut l'appeler à un moment ou à un autre, et en faire quelque chose [:mr mala]


Message édité par masklinn le 06-09-2005 à 23:38:51

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
Reply

Sujets relatifs:

Leave a Replay

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