Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème pour supprimer un élément

Sujet résolu
    23 juin 2018 à 15:11:22

    Bonjour à tous,

    dans la fonction focus_entree je peux créer une zone input en dynamique Ca marche bien mais je donne la possibilité de supprimer cette zone au cas où. alert("R e M O V e"); m'affiche bien le message comme quoi je passe bien par cette fonction mais l'input n'est pas supprimée Pouvez vous me me dire (et je pense que je m'adresse pas à la bonne partie du DOM avec $(this).parent('div').remove();) mon erreur?

    Merci

    <script>	
    	function focus_entree(rang) {
    		event.preventDefault();
    		var ww = 'var wrapper_entree = $(".input_entree_' + rang + '");';		
    		eval(ww);	
    		var obj = Object.create(wrapper_entree);
    		
    		obj.selector = ".input_entree_" + rang;	
    		var selec = "<div style='display:inline-block;'>-<input  onclick='focus_libelle_plat(this)' type='text' id='entree_"+rang+
    						    "' name='entree_"+rang+"[]' style='background-color:#E6E6E6' size='40'/>&nbsp;<a href='#' onclick='focus_remove()' class='remove_entree_"+rang+
    							" fa fa-minus-circle actu'></a></div>";
    		$(obj.selector).append(selec);		
    	}
    	
    	function focus_remove() {
    		// event.preventDefault();
    		$(this).parent('div').remove(); 
    		alert("R e M O V e");
    	}
    	



    • Partager sur Facebook
    • Partager sur Twitter
      23 juin 2018 à 16:20:36

      Bonjour à toi,

      Je ne comprends pas très bien la ligne pour supprimer :

      $(this).parent('div').remove();

      Peut être qu'au lieu de rappeler la balise parente de ton input, tu pourrais lui donner une ID pour supprimer la balise, ex :

      $('#ma_div').remove();

      Après si tu peux donner les détails de ce que tu veux faire avec ce code je peux essayé de voir pour que ce soit adapté ^^. En tous cas, Je pense que l'erreur viens de la balise pointé.

      -
      Edité par Enderfight95 23 juin 2018 à 16:22:33

      • Partager sur Facebook
      • Partager sur Twitter
        23 juin 2018 à 17:22:56

        Tu as oublié de mettre this dans ta fonction remove.

        <script> 
            function focus_entree(rang) {
                event.preventDefault();
                var ww = 'var wrapper_entree = $(".input_entree_' + rang + '");';      
                eval(ww);  
                var obj = Object.create(wrapper_entree);
                 
                obj.selector = ".input_entree_" + rang;
                var selec = "<div style='display:inline-block;'>-<input  onclick='focus_libelle_plat(this)' type='text' id='entree_"+rang+
                                    "' name='entree_"+rang+"[]' style='background-color:#E6E6E6' size='40'/>&nbsp;<a href='#' onclick='focus_remove(this)' class='remove_entree_"+rang+
                                    " fa fa-minus-circle actu'></a></div>";
                $(obj.selector).append(selec);     
            }
             
            function focus_remove(e) {
                // event.preventDefault();
                $(e).parent('div').remove();
                alert("R e M O V e");
            }



        • Partager sur Facebook
        • Partager sur Twitter
          23 juin 2018 à 17:48:17

          var selec = "<div style='display:inline-block;'>-<input  onclick='focus_libelle_plat(this)' type='text' id='entree_"+rang+
                                      "' name='entree_"+rang+"[]' style='background-color:#E6E6E6' size='40'/>&nbsp;<a href='#' onclick='focus_remove()' class='remove_entree_"+rang+
                                      " fa fa-minus-circle actu'></a></div>";

          Enderfight9 merci pour ton intervention Comme tu peux le voir dans dans select je donne la possibilité de créer des <input de façon dynamique sur une même ligne Ceci fonctionne bien Si je clique dans la zone de saisie la fonction focus_libelle_plat me permet de l'autocompletion à partir d'une table et ça fonctionne bien aussi Par contre je donne la possibilité à l'utilisateur pour chaque <input créée de la supprimer avec onclick='focus_remove(this)
          et ça je n'y arrive pas Avec ta proposition je ne vois pas trop comment faire puisque je peux avoir n <input sur la même ligne 
          DevMercenaire j'ai essayé avec $(this).parent('div').remove();  mais ça ne marche pas Est-ce la bonne façon de faire?
          Merci
          • Partager sur Facebook
          • Partager sur Twitter
            23 juin 2018 à 17:54:50

            Est ce que tu as aussi effectuer le changement dans la fonction focus_remove ? 

            Le this que tu as mis ne représente pas l'objet référencé mais un objet window 

            -
            Edité par DevMercenaire 23 juin 2018 à 18:12:44

            • Partager sur Facebook
            • Partager sur Twitter
              23 juin 2018 à 18:47:42

              j'avoue que n'y vois pas très clair et je ne sais pas d'où partir pour utiliser le bon objet
              • Partager sur Facebook
              • Partager sur Twitter
                23 juin 2018 à 18:53:09

                Cescu a écrit:

                j'avoue que n'y vois pas très clair et je ne sais pas d'où partir pour utiliser le bon objet

                Tu n'as pas répondu à question. Est ce tu as apporté les modifications à ta méthode ?

                onclick='focus_remove(this)'  // Tu passes à la méthode le paramètre this qui représente l'objet lui même.  
                function focus_remove(e) { // tu reçois l'objet réferencé      
                        $(e).parent('div').remove();  // le paramètre e dans ce cas ci représente l'élément <a>....</a> 
                        alert("R e M O V e");
                    }

                -
                Edité par DevMercenaire 23 juin 2018 à 18:58:13

                • Partager sur Facebook
                • Partager sur Twitter
                  23 juin 2018 à 19:23:05

                  Cescu a écrit:

                  var selec = "<div style='display:inline-block;'>-<input  onclick='focus_libelle_plat(this)' type='text' id='entree_"+rang+
                                              "' name='entree_"+rang+"[]' style='background-color:#E6E6E6' size='40'/>&nbsp;<a href='#' onclick='focus_remove()' class='remove_entree_"+rang+
                                              " fa fa-minus-circle actu'></a></div>";


                  Enderfight9 merci pour ton intervention Comme tu peux le voir dans dans select je donne la possibilité de créer des <input de façon dynamique sur une même ligne Ceci fonctionne bien Si je clique dans la zone de saisie la fonction focus_libelle_plat me permet de l'autocompletion à partir d'une table et ça fonctionne bien aussi Par contre je donne la possibilité à l'utilisateur pour chaque <input créée de la supprimer avec onclick='focus_remove(this)
                  et ça je n'y arrive pas Avec ta proposition je ne vois pas trop comment faire puisque je peux avoir n <input sur la même ligne 
                  DevMercenaire j'ai essayé avec $(this).parent('div').remove();  mais ça ne marche pas Est-ce la bonne façon de faire?
                  Merci
                  Dac j'avais pas compris. Dans ce cas je vais réfléchir un peu plus...

                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 juin 2018 à 21:49:34

                    DevMercenaire gros problèmes chez moi ce soir avec internet J'ai posté ma réponse et je n'en retrouve plus la trace Alors oui je viens effectivement de faire la modification que tu m'as proposée et elle marche Donc c'est parfait en plus tu me donnes les explications pour mieux comprendre c'est vraiment ce que je souhaite Par contre j'ai une question qui prouve que je ne saisis pas tout : pourquoi dans ma fonction lorsque je remplace e par this ça ne marche plus? Merci

                    Enderfight95 merci à toi

                    • Partager sur Facebook
                    • Partager sur Twitter
                      23 juin 2018 à 23:41:54

                      This, à l'intérieur de n'importe quelle fonction, sera l'objet sur lequel la fonction est invoquée. Dans ton cas, tu ne l'invoques sur aucun objet. Donc, par défaut, cela se réfère à l'objet global, dans ton navigateur, l'objet window

                      Fait un console.log(this) et tu le verras.

                      -
                      Edité par DevMercenaire 23 juin 2018 à 23:47:11

                      • Partager sur Facebook
                      • Partager sur Twitter
                        24 juin 2018 à 4:59:42

                        C'est très clair Encore merci et bon week end !!!

                        PS Tout marche impeccable Un grand merci pour votre aide et vos intentions !!! 

                        -
                        Edité par Cescu 25 juin 2018 à 10:24:15

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Problème pour supprimer un élément

                        × 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