Partage
  • Partager sur Facebook
  • Partager sur Twitter

Prévisualisation d'images

Avec split()...

Sujet résolu
    18 avril 2011 à 22:12:15

    Bonsoir,

    Je commence à sécher au niveau des idées...
    J'explique rapidement la situation : J'ai un champ (textarea) dans lequel le posteur insèrera des liens (un lien par ligne) menant vers des images.
    Lorsque le posteur sort du champ (blur), j'aimerais afficher les images en-dessous du champ. J'ai donc créé une div censée les accueillir (.previewDiv).
    J'ai ensuite fait une petite fonction JS (jQuery) qui récupère la valeur du champ sur lequel le blur s'est fait, et fait un split("\n") pour séparer chaque image.
    Le problème intervient lorsqu'il s'agit de placer ces images dans la div qui suit le champ (.next(div.previewDiv p)). Ne connaissant pas l'ID du champ actuel, j'utilise $(this), mais je ne sais pas d'où ça vient, ça ne passe pas.
    Voici donc le code actuel :
    $(document).ready(function() {
        $("textarea.images").blur(function() {
            var images = $(this).val().split(\'\n\');
            $("div.previewDiv p").html("");
    
            if(images[0] !== "")
            {
                for(var i = 0; i < images.length; i++)
                {
                    if(images[i] !== "")
                    {
                        $(this).next("div.previewDiv p").append("<img src=\"" + images[i] + "\" alt=\"Image " + i + "\" />");
                    }
                }
            }
        });
    });
    

    Si l'un d'entre-vous pourrait m'aiguiller sur cette affaire, ce serait un bon coup de pouce ;) .

    Merci d'avance pour vos réponses,
    Bonne soirée à vous.
    • Partager sur Facebook
    • Partager sur Twitter
      19 avril 2011 à 0:38:10

      Pourquoi tu échappes tes apostrophes ligne 3 ?

      Pour que la fonction next() fonctionne, il faut que l'élément soit immédiatement après le textarea. Assure-toi que c'est bien le cas (sinon il faut utiliser nextAll je crois).
      • Partager sur Facebook
      • Partager sur Twitter
        19 avril 2011 à 7:52:23

        J'échappe car le code se trouve dans un echo en PHP, j'ai oublié de modifier ça quand j'ai mis le code ici ^^ .
        Autrement, j'ai essayé nextAll(), et toujours pas... le code est-il au moins bon tel qu'il est ? C'est uniquement le next() qui gène, ou est-ce le $(this) ?

        Merci de ton aide ;) .
        • Partager sur Facebook
        • Partager sur Twitter
          19 avril 2011 à 8:04:05

          Dans un echo ? C'pas plus simple de refermer ?> puis de réouvrir après le JS ? x)

          Enfin bref, je vois rien d'autre de gênant. Que dit la console d'erreurs (Outils -> Console d'erreurs sous Firefox) ?
          • Partager sur Facebook
          • Partager sur Twitter
            19 avril 2011 à 8:07:26

            Non, je teste pour le moment (je me complique la vie oui ;) ).
            Je préfère garder le moins d'ouvertures et de fermetures de PHP pour des raisons d'économie de ressources serveur (même si ces économies sont infimes).

            La console d'erreurs ne dit rien, celle de Firebug non plus.
            • Partager sur Facebook
            • Partager sur Twitter
              19 avril 2011 à 9:19:02

              Peut-on voir le code complet alors ?
              • Partager sur Facebook
              • Partager sur Twitter
                19 avril 2011 à 9:29:34

                Les lignes surlignées sont celles de la div previewDiv.
                <?php
                    echo 'Retiré ;)';
                ?>
                
                • Partager sur Facebook
                • Partager sur Twitter
                  19 avril 2011 à 9:34:33

                  C'est pas un next() qu'il faut que tu utilises, ni un nextAll()...

                  C'est un... parent().nextAll('div.previewDiv').eq(0).find('p')

                  Je suppose.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 avril 2011 à 9:44:18

                    Merci à toi !
                    Par contre, explications ? J'ai cherché pour eq() dans la doc jQuery, mais j'ai pas tout compris, ça sert à quoi ?

                    Merci encore, tout fonctionne comme sur des roulettes ;) .
                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 avril 2011 à 20:31:02

                      Vu que nextAll() retourne (potentiellement) plusieurs éléments, eq(0) te permet de ne garder que le premier.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Prévisualisation d'images

                      × 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