Si textarea vide, ne pas envoyer le form...

Résolu
Jean_2 Messages postés 245 Statut Membre -  
Jean_2 Messages postés 245 Statut Membre -
Bonjour à tous,

J'ai un ptit problème sur un formulaire :

J'ai fait une fonction validation pour envoyer un formulaire que si tous les champs sont remplis :

function validation()
{
if(document.formulaire.pseudo.value == "")
{
alert ('veuillez entrer votre pseudo');
document.formulaire.pseudo.focus();
return false;
}
if(document.formulaire.ville.value == "")
{
alert ('veuillez entrer un nom de ville');
document.formulaire.ville.focus();
return false;
}
if(document.formulaire.commentaire.contenu == "")
{
alert ('veuillez entrer un commentaire ');
document.formulaire.contenu.focus();
return false;
}
else {return true;}
}

Cette fonction fonctionne (belle redondance), sauf pour la dernière condition.

Précision : contenu est un textearea :
<textarea name="contenu" cols="70" id="contenu"></textarea>

C'est pour celà ? Ya quelque chose qui vous parait anormal ?

Merci de votre aide...
Configuration: Windows XP
Firefox 2.0.0.7

5 réponses

  1. Posotaz Messages postés 505 Statut Membre 226
     
    Salut Jean,

    Contrairement aux champs input qui fonctionnent avec l'attribut value, les textarea prennent en compte le texte à l'intérieur des balises fermante et ouvrante. Essaie :
    document.formulaire.commentaire.contenu.innerHTML
    

    Sans la propriété innerHTML c'est l'objet textarea lui-même que tu compares à une chaîne de caractères vide.

    (ERRATUM : Voir plus bas.)
    1
  2. Jean_2 Messages postés 245 Statut Membre 12
     
    je te remercie

    t'as trop assuré

    bye
    1
  3. Jean_2 Messages postés 245 Statut Membre 12
     
    En fait le script marchait, j'avais juste une tite erreur de frappe :

    il fallait mettre if(document.formulaire.contenu.value == "")

    à la place de if(document.formulaire.commentaire.contenu == "")

    PS : PB sur ton script, il ne fonctionne pas, il affiche la box que le texarea soit rempli ou pas...
    0
  4. Posotaz Messages postés 505 Statut Membre 226
     
    C'est juste, dans la mesure où le textarea est une balise dynamique, l'objet utilise lui aussi la propriété value pour accéder à la valeur... ça reste un champ de formulaire fidèle. Merci à toi.
    0
    1. Jean_2 Messages postés 245 Statut Membre 12
       
      par contre je viens de m'apercevoir d'un autre pb sur ce formulaire : j'ai fait des boutons d'option pour donner une note

      dans ma fonction :
      if(document.formulaire.note.value == "")
      {
      alert ('veuillez donner une note');
      document.formulaire.note.focus();
      return false;
      }

      dans mon formulaire :
      <input type="radio" name="note" value="0" /> 0
      <input type="radio" name="note" value="1" /> 1
      <input type="radio" name="note" value="2" /> 2

      et là, je comprend pas, car ça m'affiche pas la box quand je n'ai pas choisi...
      0
      1. Posotaz Messages postés 505 Statut Membre 226 > Jean_2 Messages postés 245 Statut Membre
         
        Re salut, en effet là c'est différent parce que document.formulaire.note te renvoie un tableau de "radio".

        J'ai peut-être une solution pour toi :
        var notes = document.formulaire.note;
        var i=0;
        while(i<notes.length && notes[i].checked==false) {
        	i++ ;
        }
        if(i>=notes.length) {
               alert("veuillez donner une note");
               return false;
        }
        Là on parcourt toutes les radio une à une jusqu'à ce qu'on en ait trouvée une de cochée ou qu'on les a toutes parcourues. Si on les a toutes parcourues sans n'avoir rien trouvé on affiche le message et on donne le feu rouge.
        0
      2. Jean_2 Messages postés 245 Statut Membre 12 > Posotaz Messages postés 505 Statut Membre
         
        merci pour ce code mais 2 questions me taraudent (dsl pour l'orthographe) :

        1/ que signifie && (la différence avec &). Java, je connais trop pas...


        2/ Pour appeler cette fonction, je dois la faire onSubmit, or j'y appelle déjà une fonction.
        onSubmit="return validation();"

        Pour appeler la 2eme, je fais comment ?Quelle syntaxe ? Appele là comme tu veux...


        Merci merci tu m'aides trop car ce formulaire commence à me faire &#|%&# lol
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Posotaz Messages postés 505 Statut Membre 226
     
    Pour la signification des opérateurs je te renvoie ici : javaop (ce sont les opérateurs Java, pas Javascript mais la majorité se ressemblent)

    Tu as lu mon message au moment où j'avais mis ce code dans une fonction ? Oublie, c'était pour mes besoins personnels à des fins de test, tu n'as qu'à prendre tout le code et le placer à la suite de tes if dans ta fonction validation().
    function validation()
    {
    if(document.formulaire.pseudo.value == "")
    {
    alert ('veuillez entrer votre pseudo');
    document.formulaire.pseudo.focus();
    return false;
    }
    if(document.formulaire.ville.value == "")
    {
    alert ('veuillez entrer un nom de ville');
    document.formulaire.ville.focus();
    return false;
    }
    if(document.formulaire.contenu.value == "")
    {
    alert ('veuillez entrer un commentaire ');
    document.formulaire.contenu.focus();
    return false;
    }
    var notes = document.formulaire.note;
    var i=0;
    while(i<notes.length && notes[i].checked==false) {
    	i++ ;
    }
    if(i>=notes.length) {
           alert("veuillez donner une note");
           return false;
    }
    return true; // On ne lance cette instruction que si on n'est entré dans aucune condition plus haut. L'appel à "return" provoque la sortie de la fonction.
    } 
    Ben je t'emprie ;-)
    0