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 :

Requête Ajax sur éléments d'un select remplis par Ajax


Sujet :

JavaScript

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 54
    Points : 28
    Points
    28
    Par défaut Requête Ajax sur éléments d'un select remplis par Ajax
    Désolé pour l'intitulé du sujet j'ai pas trouvé mieux sur le moment.

    Alors mon problème est que je dois pointer dans mes select l'élément vide présent, ceci sur une action javascript.

    Pour info, je travaille sou Delphi For PHp avec interbase comme BDD ( on sait jamais)

    Mon problème est qu'il n'y a que la première requête qui s'effectue. Le code de 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
    function remiseazero (parametre)
    {
    var param= parametre;
    var i=0;
    var j=0;
     
    while (param.options[i].text!="")
    {
    i=i+1
    }
    var j=param.options[i].value
    param.options[j].selected=true
    param.options[param.selectedIndex].text=""
    }
     
    var selectBox = document.getElementById('ComboBoxRechercheTYPE');
    remiseazero(selectBox);
     
    var selectBoxx = document.getElementById('ComboBoxRechercheNOMEQUIP');
    remiseazero(selectBoxx);
    Le problème est que le vidage de le premier select s'effectue normalement, et l'explorateur ne crashes pas ce que je croyais car j'avais fait une boucle qui pouvait être infinie au début.

    Je pense maintenant que le problème vient du fait que l'élément vide rajouté dans le seconde select est fait par une précédente requête ajax, ainsi que le reste du remplissage du select.

    Y a t il quand même un moyen de pointer sur des éléments implants par une précédente requête ajax ?
    Ou est ce un problème venant du fait que les deux requêtes se font quasi simultanément ?

    Merci par avance de l'aide que vous pourrez m'apporter.

    Amicalement,descurai

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Salut, sur la faq, il y a une fonction qui vide un select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function raz(liste)
    {l=document.getElementById(liste).length;
    for (i=l; i>=0; i--)
       document.getElementById(liste).options[i]=null;
    }
    raz('ComboBoxRechercheTYPE');
    raz('ComboBoxRechercheNOMEQUIP');
    L'utilisation de param.options[param.selectedIndex].text n'est pas cross-browser.
    http://javascript.developpez.com/faq...js#listesLiees
    Regarde la fonction raz.

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 54
    Points : 28
    Points
    28
    Par défaut
    Salutations, excuse moi je m'exprime mal en fait.

    Alors mon problème est que j'ai trois select = combobox

    La premiere est la REFERENCE des équipements
    La seconde est le TYPE des équipements
    La troisième est le NOM des équipements

    Lorsque je clique sur un type d'équipement, je fais une requête ajax qui me remplis le nom des équipements qui ont pour type le type sélectionné.
    Jusque la tout va.

    Maintenant je dois lorsque je choisis une référence, pointer sur l'élément vide déjà présent en début de sélect.

    Select Type :

    1-""
    2-Chaud
    3-Froid


    Select Nom:

    1-""
    2-Chauffage
    3-Climatiseur

    Quand j'exécute ma fonction, celle ci pointe sur l'élément vide du select type, sans pour autant vider la combobox.
    Mais elle ne veut pas faire de même sur le select du nom des équipements.

    Problème qui vient je pense du fait qu'elle est déjà remplie avec un appel Ajax.

    Si tu n'a toujours pas compris n'hésite pas, pas vraiment facile à expliquer pour l'handicapé que je suis. Jamais été très fort dans ce domaine.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    On peut voir les codes concernés?

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 54
    Points : 28
    Points
    28
    Par défaut
    Si tu veux, voici l'appel a la fonction de remplissage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
          //  ----- COMBOBOX Recherche TYPE -> NOM EQUIPEMENT -----
     
          function ComboBoxRechercheTYPEJSChange($sender, $params)
          {
           ?>
           var params = 'type=' +document.getElementById('ComboBoxRechercheTYPE')
           .options[document.getElementById('ComboBoxRechercheTYPE').selectedIndex].text;
     
           basicAjax("Ajax_Recherche/recherche_type_nomequip.php",params);
           <?php
          }
    Et voici la page appelée par la fonction précédente :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?php
    //Initialisation de la variable
    $type='' ;
     
    if(isset($_POST["type"]))
    {
    //Récupération de la variable passée par la méthode POST
      $type=$_POST["type"];
    }
     
    $rettype="";
    $rettype.= $type;
     
    $typedecode=utf8_decode($type);
     
     
    // Connexion a la base de donnée
    $conn=ibase_connect('localhost:D:\BD_G2IT\BASEDESBONS.FDB', 'SYSDBA', 'masterkey');
     
    if (!$conn)
    {
    echo "Access Denied!";
    exit;
    }
     
    //Exécuter la requête
    $result=ibase_query($conn, "SELECT DISTINCT NOM_MAT FROM MATERIEL WHERE UPPER(MATERIEL.TYPE_MAT)=UPPER('$typedecode')");
     
    //Remise à zéro de la combo
    ?>
    while(vcl.$('ComboBoxRechercheNOMEQUIP').options[0]){vcl.$('ComboBoxRechercheNOMEQUIP').removeChild(vcl.$('ComboBoxRechercheNOMEQUIP').options[0])}
    additem(vcl.$('ComboBoxRechercheNOMEQUIP'),"");
    <?php
     
     
     
    //Traitement lignes par lignes du tableau contenant les résultats de la requête SQL
    while ($row = ibase_fetch_row ($result))
    {
    $nomequip=addslashes($row[0]);
     
    echo "var nomequip='$nomequip';";
     
    // Fonction d'ajout et Ajout en Java Script
       ?>
       function additem(obj,text)
              {
              var newOpt = obj.appendChild(document.createElement('option'));
              newOpt.text = text;
              }
     
    additem(vcl.$('ComboBoxRechercheNOMEQUIP'),nomequip);
       <?php

  6. #6
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 54
    Points : 28
    Points
    28
    Par défaut
    Ici la requête d'affichage de la REFERENCE des équipements :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
          //  ----- COMBOBOX Affichage Label REF EQUIPEMENT -----
     
     
           function ComboBoxRechercheREFERENCEJSChange($sender, $params)
          {
           ?>
              var params = 'refequip=' +document.getElementById('ComboBoxRechercheREFERENCE')
              .options[document.getElementById('ComboBoxRechercheREFERENCE').selectedIndex].text
              basicAjax("Ajax_Recherche/recherche_affichage_refequip.php",params);
           <?php
           }


    Et dans la page appelée il y a juste une requête qui rempli un label et le reste est la fonction postée dans le premier post.


    Autre chose ?

  7. #7
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 54
    Points : 28
    Points
    28
    Par défaut
    Je me suis débrouillé je recharge la combobox entièrement, approche plus "normale" du système.

    J'aimerais savoir tout de même s'il est possible de faire l'opération demandé, car je risque d'en avoir besoin par la suite. S'il n' y a pas a priori de solutions, ce n' est pas grave merci quand même de t'être intéréssé à mon code ça fait plaisir.

    Bonne Soirée à toi, je boirais un coup à ta santé ce soir.

    Amicalement,descurai

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/02/2014, 00h23
  2. [AJAX] Valider un select rempli avec ajax
    Par Abdoul19 dans le forum jQuery
    Réponses: 1
    Dernier message: 18/04/2013, 21h52
  3. Réponses: 4
    Dernier message: 21/07/2011, 08h04
  4. Réponses: 3
    Dernier message: 28/02/2009, 06h23
  5. [AJAX] Click sur select alimenté par ajax plante ie
    Par Pgs dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 08/04/2008, 10h45

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