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

jQuery Discussion :

Passer un parametre à une fonction


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 45
    Par défaut Passer un parametre à une fonction
    Bonjour,
    Pour une appli développée avec codeigniter
    J'utilise un script jquery, que j'ai trouvé sur le web, pour ajouter dynamiquement des champs à un formulaire
    Le script est appelé dans une view :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="javascript:void(0);" class="add_input_button" title="Add field"><img src="add-icon.png"/></a>
    Il contient ceci :
    (j'ai viré une bonne partie du code HTML de new_field_html, inutile pour la compréhension du pb)
    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
    $(document).ready(function(){
        var max_fields = 10;
        var add_input_button = $('.add_input_button');
        var field_wrapper = $('.field_wrapper');
        var new_field_html = '...<a href="javascript:void(0);" class="remove_input_button" title="Remove field"><img src="img/books_remove-icon.png"/></a>...';
        var input_count = 1;
        $(add_input_button).click(function(){
            if(input_count < max_fields){
                input_count++;
                $(field_wrapper).append(new_field_html);
            }
        });
        $(field_wrapper).on('click', '.remove_input_button', function(e){
            e.preventDefault();
            $(this).closest('#inputFormRow').remove();
            input_count--;
        });
    });
    En ce qui concerne la partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(add_input_button).click(function(){
    du code, je voudrais modifier le chemin d'accès à l'IMG parce que comme tel, elle ne s'affiche pas. Il faudrait que je puisse passer le chemin, depuis la view, au code JS
    j'imagine qu'il faut modifier javascript:void(0); pour lui passer le paramètre "pathToImg"
    Mais je ne sais pas comment faire et encore moins comment modifier le script pour récupérer le paramètre
    Toute aide sera la bienvenue, sachant que je vais être honnête, je n'ai pas la moindre envie de me plonger dans la doc pour apprendre jquery car j'en ai une utilisation strictement limité à ce cas de figure et je manque cruellement de temps.
    Merci

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 524
    Par défaut
    Bonjour,

    Il me semble que vous n'êtes pas obligés d'utiliser un paramètre si c'est seulement pour corriger le chemin d'accès ou l'attribut src de l'image <img src="img/books_remove-icon.png"/>.

    Il vous faut seulement utiliser un chemin relatif par rapport à la page dans laquelle le script jQuery est appelé.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 45
    Par défaut
    Non, ça ne marche pas trop... codeigniter offre d'ailleurs une fonction base_url('img/image.jpg') qui permet de s'assurer que l'élément graphique sera trouvé au bon endroit quel que soit le niveau du fichier dans lequel l'image est invoquée.
    Du coup, comment passer la valeur de cette fonction au script JS ?

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 129
    Par défaut
    Hello,

    Ajoutez un attribut data-image-path qui contient le chemin de l'image généré par CodeIgniter. Assurez-vous d'avoir chargé le "URL helper" ($this->load->helper('url') dans votre contrôleur.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <a href="javascript:void(0);" class="add_input_button" title="Add field" 
       data-image-path="<?= base_url('img/books_remove-icon.png')?>">
        <img src="add-icon.png"/>
    </a>

    Récupérez le chemin depuis l'attribut data-image-path et utilisez-le pour construire votre HTML.

    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
    $(document).ready(function(){
        var max_fields = 10;
        var add_input_button = $('.add_input_button');
        var field_wrapper = $('.field_wrapper');
        var input_count = 1;
     
     
        $(add_input_button).click(function(){
            if(input_count < max_fields){
                // Récupérez le chemin depuis l'attribut data du bouton sur lequel on a cliqué
                var imagePath = $(this).data('image-path');
     
     
                // Construisez le HTML en utilisant cette variable (j'utilise des template literals `...` pour plus de clarté)
                var new_field_html = `...<a href="javascript:void(0);" class="remove_input_button" title="Remove field"><img src="${imagePath}"/></a>...`;
     
                input_count++;
                $(field_wrapper).append(new_field_html);
            }
        });
     
     
        // Le reste de votre code reste inchangé
        $(field_wrapper).on('click', '.remove_input_button', function(e){
            e.preventDefault();
            $(this).closest('#inputFormRow').remove();
            input_count--;
        });
    });
    En résumé :

    1. Vous "stockez" le chemin correct généré par PHP dans un attribut data- sur votre bouton.
    2. Votre JavaScript lit cet attribut au moment du clic pour obtenir le chemin et construire le nouveau champ.



    https://www.tutorialrepublic.com/faq...ing-jquery.php
    https://api.jquery.com/data/
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 45
    Par défaut
    Ca marche !!!
    Merci beaucoup et merci pour les refs
    Eric

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

Discussions similaires

  1. Passer en parametre une cellule dans une fonction crée
    Par tamtam64 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/02/2015, 09h53
  2. Passer comme argument une fonction paramétrée
    Par spikeespk dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/02/2008, 15h06
  3. Passer en paramètre une Combo
    Par Kemanke dans le forum Visual C++
    Réponses: 4
    Dernier message: 17/04/2007, 09h55
  4. [VBA-A]passer en paramètre une partie du nom de tables?
    Par pheno82 dans le forum VBA Access
    Réponses: 4
    Dernier message: 21/03/2006, 11h26
  5. Réponses: 6
    Dernier message: 12/03/2006, 17h30

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