Partage
  • Partager sur Facebook
  • Partager sur Twitter

ajouter une liste deroulante dojo supplémentaire

Sujet résolu
    18 août 2010 à 17:15:34

    Bonjour,
    je réalise un formulaire dans lequel j'ai mis une liste déroulante avec le frameword dojo(filteringselect) dont les données sont issues d'une BDD.
    Jusque là rien de bien compliqué.

    ce que je cherche à faire est de rajouter un bouton "+" ou "ajouter un produit" qui lorsque l'on clique dessus nous rajoute dans le formulaire une nouvelle liste déroulante (avec les même données que la précédente) et avec un id et un nom différent (ça c'est pour le traitement de données en POST).

    Du coup j'aurai un formulaire avec par exemple une liste de produit, et lorsque l'utilisateur à choisi un produit il peut en rajouter autant de fois qu'il cliquera sur le bouton "+".

    j'ai donc fait une fonction javascript d'ajout d'élément, mais lorsque je cliques sur le bouton "+" il m'ajoute bien bien un élément mais c'est une textebox (en fait on voit qu'il n'active pas dojo) mais si on reclique sur le bouton "+" alors d'une part il m'ajoute une nouvelle textebox, mais il me transforme bien la textebox précédente en filteringSelect comme demandé avec les données à l'intérieur (grace à mon fichier produit_json.php qui inclut une requête à la BDD avec les données à l'intérieur).

    Voici mon code...
    var i = 1;
    var monStore = new dojo.data.ItemFileReadStore({url:"functions/produit_json.php"});
    function create_champ(){
     var nouveau = document.createElement('div');
    nouveau.id = 'produit_ajout' + i;
     
     var eSelect = document.createElement('select');
    eSelect.id = 'id_select' + i;
     
     var filteringSelect = new dijit.form.FilteringSelect({
            id: "id_produit" + i,
    		name: "produit" + i,
    		value: "1",
    		store: monStore,
    		searchAttr: "name"
    	}, "eSelect.id");
    	
    	nouveau.innerHTML = 'Produit suppl&eacute;mentaire : <input id="eSelect.id"></select>&nbsp;&nbsp;<a  onclick="remove_champ(' + i + ')" href="#" />Supprimer</a><hr></div>';
    	
    	document.getElementById('produit_ajout').appendChild(nouveau);
    	i++;
    }
     
    function remove_champ(i){
    	var parent = document.getElementById('produit_ajout' + i).parentNode;
    	parent.removeChild(document.getElementById('produit_ajout' + i));
    }
    


    il doit me manquer quelque chose..... rhaaaa

    merci à tous
    • Partager sur Facebook
    • Partager sur Twitter
      19 août 2010 à 12:18:34

      plz stoip direct d'utiliser une lib est apprend le js et c'est regler en 10min max
      • Partager sur Facebook
      • Partager sur Twitter
        19 août 2010 à 13:39:50

        lechoixdunelibrairieestunchoixpersonneletreflechi....

        moa ossi je peus faire des reponces côme toa qui nède persone...

        @+
        • Partager sur Facebook
        • Partager sur Twitter
          19 août 2010 à 21:33:36

          ben si c'est un choix personnel, reste plus qu'a apprendre la doc ^^
          • Partager sur Facebook
          • Partager sur Twitter
            21 août 2010 à 22:41:19

            bon après maintes et maintes recherches, j'ai enfin trouvé la solution, un peu par hasard, mais cela fonctionne...
            en fait c'était très très simple il suffisait de modifier l'ordre de traitement des éléments....

            voici le code corrigé.

            var i = 1;
            
            function create_champ(){
             var nouveau = document.createElement('div');
            	nouveau.id = 'produit_ajout' + i;
            	nouveau.innerHTML = 'Produit suppl&eacute;mentaire : <input id="nouveau.id"> &nbsp;&nbsp;<a  onclick="remove_champ(' + i + ')" href="#" />Supprimer</a><hr>';
            	document.getElementById('produit_ajout').appendChild(nouveau);
            
            var filteringSelect = new dijit.form.FilteringSelect({
                    id: "id_select_produit" + i,
            		name: "select_produit[" + i + "]",
            		value: "1",
            		store: SelectProduit,
            		searchAttr: "name"},
                    "nouveau.id");
            		
            	i++;	
            }
            


            si cela peut aider quelqu'un ...
            • Partager sur Facebook
            • Partager sur Twitter

            ajouter une liste deroulante dojo supplémentaire

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown