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 :

name [] bizarroide !


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 10
    Points : 8
    Points
    8
    Par défaut name [] bizarroide !
    Bonsoir ! Oui je suis nouveau et je ramene un petit probleme avec moi, et pas n'importe lequel merci de me denicher 2 tites minutes les connaisseurs en JS [:p]

    Alors j'ai une page en HTML qui contiens plusieurs inputs textes cette partie html est générée directement a partir d'un script php ce script check des variables stockés dans un tableau dans la session et les affiche, ces variables sont le produit mis dans le caddie et sa quantité, ce qui m'interesse le plus la c'est la quantité le nom de l'input texte est : aElements[XX]:

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    input type="text" name="aElements[20]" value="2" size="1" class="input" id="quantite"/>
     
    input type="text" name="aElements[21]" value="3" size="1" class="input" id="quantite"/>


    Comme vous l'avez constaté c un input texte qui se duplique selonla quantité du contenu selectionné par l'utilisateur.

    Alors l'enjeu, est de pouvoir selectionner ses aElements[XX] dans un petit javascript qui me limite la valeur a 5 car un seul utilisateur ne peux pas acheter plus de 5 produits de meme type.
    Bon ça marche d'une maniere simple quand ya pas de [xx] apres aElements (sans les inputs dupliqués) script du genre :


    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
    <script type="text/javascript">
     
    function valider(){
     
      if(document.form.aElements.value > "5") {
     
      alert("La quantité des billets doit etre inférieure ou égale a 5");
     
        return false;
     
      }
     
      else {
    // on envoie le formulaire car ok 
     
        return true;
     
      }
     
    }
     
    </script>
    ça c'est un essai qui fonctionne quand je l'ais fait dans une page a part pour tester. par contre je ne sais meme pas comment proceder pour declarer les [XX] dans javascript.. enfin aucune idée sur comment proceder !

    Merci d'avance, je compte sur vous

  2. #2
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    bon alors plusieurs choses ...

    le fait de mettre un name avec un indice n'est pas interprété par javascript ...
    pour JS
    un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <input type='text' name="aElements[1]" />
    <input type='text' name="aElements[2]" />
    <script type='text/javascript'>
     alert(document.getElementsByName("aElements").length)
    </script>
    parcontre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <input type='text' name="aElements[1]" />
    <input type='text' name="aElements[1]" />
    <script type='text/javascript'>
     alert(document.getElementsByName("aElements[1]").length)
    </script>

    Donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.form.aElements.value
    n'a aucun sens dans ton code


    Si tu veux verifier que dasn aucun des inputs text il n'y a de quantité saisie supérieure à 5

    il faudra boucler sur la collection de tes inputs que tu auras extraite du fomr:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var AllInputs=document.getElementsByTagName('input');
    var TabaElements=new Array();
    var Al=AllInputs.length;
    for(i=0;i<AL;i++){
          if(AllInputs[i].name.indexOf('aElements')>0){
                               TabaElements.push(AllInputs[i])}
                           }
    TabAElements contient alors tous les inouts ayant un name contenant "aElements" dedans ...

    il ne reste plus qu'a les controler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var CL=TabaElements.length;
    for(j=0;j<CL;j++){
         if(Number(TabaElements[j].value)>5){'input 'alert(TabaElements[j].name + ' supérieur à 5') }
    }

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup !
    ça marche avec votre proposition, mais entre temps j'ai trouvé une autre méthode plus simple je crois qui consiste a faire appel par id et vue que cet input a un id="quantity" j'ai fait ça et ça a marché aussi !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <script type="text/javascript">
    function valider(){
      if(document.getElementById("quantite").value > "5") {
      alert("La quantité des billets doit etre inférieure ou égale a 5");
      return false;
     
      }
      else {
      return true;
      }
    }
    </script>
    Encore merci, c'est la premiere fois que je viens sur ce forum, ya que des gourous aparament ! c'est génial !!

  4. #4
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    le test par id est tout a fait valable, mais je pensais que tu voulais controler tous les inputs ?

    id ne permet de controler qu'un seul input car un id doit être unique sur la page ...

    à moins que tu n'aies un nommage rationnel ?
    id="input1"
    id="input2"

    et que dans la boucle tu fasses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('input'+i)

    Encore merci, c'est la premiere fois que je viens sur ce forum, ya que des gourous aparament ! c'est génial !!
    On n'est pas LE meilleur forum de développement pour rien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C++]Machine Name
    Par Dos dans le forum MFC
    Réponses: 4
    Dernier message: 14/01/2004, 17h19
  2. [EJB] [JBOSS][javax.naming.NameNotFoundException]
    Par hamed dans le forum Java EE
    Réponses: 5
    Dernier message: 18/12/2003, 18h00
  3. [XSL] insérer une balise <a name>
    Par guibong dans le forum XMLRAD
    Réponses: 2
    Dernier message: 01/08/2003, 15h04
  4. TXMLModule.create - name = resource not found
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 04/03/2003, 10h54
  5. naming service
    Par manuel dans le forum CORBA
    Réponses: 6
    Dernier message: 09/12/2002, 17h43

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