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 :

Modifier la valeur d'un select créé par Jquery


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut Modifier la valeur d'un select créé par Jquery
    Bonjour,

    Dans un formulaire d'encodage de prix, de nouveaux prix peuvent être ajoutés à la demande via un bouton :

    Dans mon template :

    Code html : 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
        <ul class= "prices" data-prototype= " {{ form_widget ( formPricesAdvert.prices.vars.prototype )| e ( 'html_attr' ) }} " >
     
            {% for season in unique_seasons %}
     
                {% set i = 0 %}
     
                <h4>Saison {{ season.season }}</h4>
     
                <div id= "divSeason_{{ idsSeasons[i] }}">
     
                    {% for price in formPricesAdvert.prices %}                
     
                        {% if idsSeasons[i] == season.id %}
     
                            <li>
                                {{ form_label(price.price, 'Prix', {'label_attr': {'class': 'foo'}}) }}
                                {{ form_errors(price.price) }}
                                {{ form_widget(price.price) }}
     
                                {{ form_label(price.duration, 'Durée', {'label_attr': {'class': 'foo'}}) }}
                                {{ form_errors(price.duration) }}
                                {{ form_widget(price.duration) }}
     
                                {{ form_label(price.season, 'Saison', {'label_attr': {'class': 'foo'}}) }}
                                {{ form_errors(price.season) }}
                                {{ form_widget(price.season) }}
     
                                <button type="button" class="btn-remove">
                                    Supprimer cette durée
                                </button>
                            </li>
     
                        {% endif %}
     
                        {% set i = i + 1 %}
     
                    {% endfor %}
     
                    <button type="button" class="btn-add">
                        Ajouter durée
                    </button>
     
                </div>
     
            {% endfor %}
     
        </ul>

    Dans mon fichier js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $('.btn-add') . on ( 'click' , function ( e ) {
    Je crée les différents éléments repris dans le data-prototype de mon template
    });
    Tout se passe correctement pour la création. Cependant, lors de celle-ci, je voudrais attribuer une valeur à mon select {{ form_widget(price.season) }}. Et là, malgré mes nombreuses recherches, je sèche car je ne parviens pas à accéder aux différents éléments (dont ce select) qui viennent d'être créés.

    Quelqu'un aurait une piste?

    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 507
    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 507
    Par défaut
    Pourquoi ne pas le faire dans ton fichier twig avec form_widget ?
    Code twig : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {{ form_widget(price.season, {value: "la_valeur_que_tu_veux" } ) }}

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Bonjour et merci pour tes nombreuses aides !

    Ce n'est pas possible car les select peuvent avoir une valeur différente, en fonction du passage dans la boucle for() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {% for season in unique_seasons %}
    . Voici ce que ça donne au niveau du formulaire :

    Nom : Capture.JPG
Affichages : 480
Taille : 38,2 Ko

    Le bouton "Ajouter une durée" se retrouve en fin de la liste des prix correspondant à une saison et permet d'ajouter un prix qui contient 3 input : le prix, la durée et la saison. Je voudrais pousser la valeur de la saison correspondante dans le select y afférant car celui-ci est en readonly afin d'éviter des erreurs.

    En d'autre termes, quand l'utilisateur clique sur le bouton "Ajouter une durée" dans la liste des prix de la Saison basse", je voudrais pousser l'id de la saison basse dans le select correspondant à la saison. Idem pour la saison moyenne, la saison haute et la saison top.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    les boutons '.btn-add' ne sont pas présents dans le DOM au chargement de la page.

    Il faut "accrocher" l'action à un élément PRESENT.

    Remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('.btn-add') . on ( 'click' , function ( e ) {
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('body').on( 'click' , '.btn-add', function ( e ) {
    N.B. Au lieu de $('body')...., il est recommandé de l'accrocher au plus proche parent *. (ex. : $('form').... )

    * PRESENT dans le DOM au chargement de la apge.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Merci beaucoup pour ton aide. Cependant, je pense qu'on ne s'est pas bien compris : le clic sur le bouton '.btn-add' fonctionne correctement car il est présent dans la DOM via ceci dans mon template :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <button type="button" class="btn-add">
        Ajouter durée
    </button>

    L'action crée bien les 3 inputs attendus. Cependant, ce que je voudrais faire, c'est donner une valeur à un de ces trois inputs, valeur qui va varier en fonction de certains critères.

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 507
    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 507
    Par défaut
    Donc les 3 inputs dont tu as parlé sont crées dynamiquement avec javascript, ben il fallait montrer le code js et pas twig.
    Il faut voir le code exécuté au moment du clic sur .btn-add.

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

Discussions similaires

  1. Modifier la valeur par defaut d'un champs sur interbase
    Par Stephpag dans le forum InterBase
    Réponses: 10
    Dernier message: 13/07/2007, 16h23
  2. fonction qui modifie les valeurs de combos <select>
    Par NicoO_O dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/05/2007, 13h02
  3. Modifier une valeur dans un fichier sans passer par l'éditeur
    Par elkhy dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 09/06/2006, 00h15
  4. Réponses: 9
    Dernier message: 22/05/2006, 09h17

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