IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

fonction verification box et input


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut fonction verification box et input
    1) Je dois verifier si un champs input est saisi si une radio est coché
    voila un screen :

    Pièce jointe 38119

    Si libre est coché, le prix doit etre rentré.

    Ce tableau est generer dynamiquement en fonction des choix de l'internaute.
    C'est a dire que les id sont egalement généré.
    Voici le code html retourné par la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <form name="tableau" method="post" action="traitement.php" onsubmit="return validation()">
          <table align="center" border="1">
            <tr>
                         <td>du 20/06/2009 au 27/06/2009</td>
                         <td>
                           <input type="radio" id="rada[0]" name="etat[0]" value="1" checked>
                           Libre
                         </td>
                         <td>
                           <input type="radio" id="rad0" name="etat[0]" value="0" onclick="changement('rad0','prix0');">
                           Occup&eacute;
                         </td>
                         <td></td>
                         <td>
                           <input name="prix[0]" type="text" size="10" id="prix0" class="test">€
                         </td>
                       </tr>
    <tr>
                         <td>du 27/06/2009 au 04/07/2009</td>
                         <td>
                           <input type="radio" id="rada[1]" name="etat[1]" value="1" checked>
                           Libre
                         </td>
                         <td>
                           <input type="radio" id="rad1" name="etat[1]" value="0" onclick="changement('rad1','prix1');">
                           Occup&eacute;
                         </td>
                         <td></td>
                         <td>
                           <input name="prix[1]" type="text" size="10" id="prix1" class="test">€
                         </td>
                       </tr>
    Voici le code javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    function validation() {
    var inputList = document.getElementById('tableau').getElementsByTagName('input');
    var test = 0; 
    var count = inputList.length; 
    for(var i = 0; i < count; i++) { 
      var input = inputList[i]; 
      if(input.value == '' && document.getElementByid('rad['+i+']').checked) { 
        alert("Entrer votre prix svp !");
        input.focus; 
        test++; 
      } 
    } 
     
    return (test == 0);
    }
     
    Mais ca ne marche pas. J'ai reussi a le faire marché sans le && document.getElementByid('rad[+i+]').checked . Il tourne en boucle ce qui est normal vu qu'il est dans la boucle.
     
    Savez vous comment regler ceci.
    2) Si le radio occupé est coché je veux que le prix soit desactivé.

    J'ai cette fonction :

    function changement(a,b)
    {
    if (document.getElementById(a).checked) {
    document.getElementById(b).disabled=true; }
    else {
    document.getElementById(b).disabled=false;
    }

    Le probleme, c'est qu'en cliquant sur le radio occupé, il me desactive bien le prix mais en recliquant sur libre il reste inactif

    Petite idée ?

  2. #2
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par défaut
    Pour le problème 1 :
    Quelques remarques en rouge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function validation() {
    // La ligne suivante ne devrait pas marcher : ton formulaire a un name="tableau" mais pas un id="tableau"
    var inputList = document.getElementById('tableau').getElementsByTagName('input');
    var test = 0; 
    var count = inputList.length; 
    //on va boucler sur tous les inputs (radio et text) c'est bien ce que tu veux ?
    for(var i = 0; i < count; i++) { 
      var input = inputList[i]; 
      if(input.value == '' && document.getElementByid('rad['+i+']').checked) { 
     // On fait un alert et un focus mais on continue la boucle ...
        alert("Entrer votre prix svp !");
        input.focus(); 
        test++; 
      } 
    } 
     
    return (test == 0);
    }
    Donc je vois des trucs bizarres mais peux tu donner des détails sur ce qui ne marche pas ?

    Pour le problème 2 :
    Tu n'as pas d'événement sur les radios pour libérer (tu as bien un evenement onclick sur ceux pour bloquer mais pas sur ceux pour libérer)

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut
    gwyohm, merci de ta reponse.

    1) Hormis le fait que le alert soit dans la boucle, je dois l'en faire sortir mais ne sait comment car la variable i doit me permettre de retrouver le bouton radio.
    Cale fonctionne mais boucle si j'enleve le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementByid('rad['+i+']').checked
    J'ai tenté de faire un alert(document.getElementByid('rad['1']').checked) pour voir mais cela me renvoi null.
    Je ne vois pas cooment recuperer ce champs la

  4. #4
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par défaut
    Citation Envoyé par epoc.01 Voir le message
    Cale fonctionne mais boucle si j'enleve le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementByid('rad['+i+']').checked
    1/ Il faut une majuscule à getElementById
    2/ document.getElementById('rada['+i+']')
    3/ Ton algo est faux ! :
    Si tu as le HTML que tu as soumis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <form name="tableau" method="post" action="traitement.php" onsubmit="return validation()">
          <table align="center" border="1">
            <tr>
                         <td>du 20/06/2009 au 27/06/2009</td>
                         <td>
                           <input type="radio" id="rada[0]" name="etat[0]" value="1" checked>
                           Libre
                         </td>
                         <td>
                           <input type="radio" id="rad0" name="etat[0]" value="0" onclick="changement('rad0','prix0');">
                           Occup&eacute;
                         </td>
                         <td></td>
                         <td>
                           <input name="prix[0]" type="text" size="10" id="prix0" class="test">€
                         </td>
                       </tr>
    <tr>
                         <td>du 27/06/2009 au 04/07/2009</td>
                         <td>
                           <input type="radio" id="rada[1]" name="etat[1]" value="1" checked>
                           Libre
                         </td>
                         <td>
                           <input type="radio" id="rad1" name="etat[1]" value="0" onclick="changement('rad1','prix1');">
                           Occup&eacute;
                         </td>
                         <td></td>
                         <td>
                           <input name="prix[1]" type="text" size="10" id="prix1" class="test">€
                         </td>
                       </tr>
    Quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var inputList = document.getElementById('tableau').getElementsByTagName('input');
    Tu vas avoir un tableau qui contient les inputs suivants (je met les ids) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ["rada[0]", "rad0", "prix[0]", "rada[1]", "rad1", "prix[1]"]
    Tu vas commencer ta boucle (de i=0 à i<6), comme tu as défini une valeur pour les input type radio, la première fois que ton test
    sera vrai, ce sera pour i=2. La deuxieme partie de ton test va donc chercher document.getElementById('rada['+i+']').checked
    Or rada[2] n'existe pas ou bien ce n'est pas du tout celui que tu veux tester !

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    dans les contributions il doit y avoir une fonction générique pour verifier les formulaires ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut
    Salut,
    je reviens vers vous, ayant fait autre chose entre temps, il ne me reste que cette fonction a ecrire.
    Mais bon je dois avouer que cette verification de formulaire dynamique me fait sortir les yeux de la tete. Si quelqu'un avait une piste...

Discussions similaires

  1. Mettre le return d'une fonction dans une balise input
    Par khaled.mann dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/04/2009, 06h55
  2. fonction message box dans crystal report ?
    Par CyberMen dans le forum Débuter
    Réponses: 2
    Dernier message: 27/06/2008, 16h47
  3. Fonction verification nom domaine adresse email
    Par claralavraie dans le forum SQL
    Réponses: 7
    Dernier message: 10/01/2008, 16h16
  4. [PHP-JS] syntaxe fonction verification select
    Par calitom dans le forum Langage
    Réponses: 1
    Dernier message: 12/09/2006, 14h53
  5. Fonction reset sur un input="image"
    Par zave dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 23/03/2006, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo