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 :

Autocomplétion sur un champ input qui vient d'être généré


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de chewing-gum
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2009
    Messages : 105
    Par défaut Autocomplétion sur un champ input qui vient d'être généré
    Bonjour,

    dans le cadre d'un projet, je dois réaliser un formulaire avec tout un tas de fonctions dynamiques / ergonomiques, avec JQuery.

    Problème : J'ai créé une fonction pour ajouter des champs <input type="text" ... /> dynamiquement. il suffit que l'utilisateur clique sur un bouton pour que le <input> soit généré. Voila mon morceau de code (celui-ci fonctionne) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                // Ajoute une ligne
                $('p#addLine').live('click', function() {
                    var myElement = $('<tr id=' + i + '> <td>' + i + '<td> <input class="articles" type="text" name="idArticle-' + i + '" /> </td> <td> <input type="text" name="qte-' + i + '" /> </td> <td id="delete-' + i + '" class="delete">Supprimer ' + i + '</td> </tr>').appendTo('table');
                });
    Note : la variable "i" est définie un peu plus tôt dans mon code.

    Mais... Les <input> possèdent aussi une fonction d'autocomplétion. Cette dernière fonctionnalité ne marche pas pour les <input> qui sont ajoutés dynamiquement. Voila mon code d'autocomplétion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                // Autocomplétion idArticle
                $('.articles').autocomplete ({
                    source: '<%= Url.Action("GetArticles") %>',
                    datatype: 'json',
                    minLength: 2,
                    select: function(event, ui) {
                        // Traitement à effectuer
                    },
                    scroll: true
                });
    Les champs "non générés dynamiquement" par JQuery n'ont pas d'autocomplétion.
    J'imagine peut-être qu'il faut effectuer une sorte de "refresh" pour que mes <input> générés soient pris en compte ?

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    La meilleure chose à faire serait sans doute s'équiper d'une fonction d'initialisation capable de prendre un contexte en paramètre de façon a pouvoir initialiser les éléments ajoutés dynamiquement.

    Ex:
    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
     
    function _init () {
      var context = arguments[0] || document;
     
      $('.autocomplete', context).autocomplete(...);
    }
     
    $(function () {
     
      $('#add').live('click', function() {
         var html = $('<div>...</div>');
         _init( $('anything').after(html) );
      });
     
      _init();
    });

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    voir aussi on() et delegate() ...
    live() est deprecié depuis jQuery 1.7
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 119
    Par défaut
    bonjour,
    je suis en apprentissage de jQuery, que j'apprécie beaucoup!
    Et j'ai le même souci (je crois)...
    J'ai des <span class="toto"> générés au chargement, qui déclenchent des fonctions lorsqu'ils sont cliqués:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('.toto').click(function...
    pas de souci, tout fonctionne... Mais je génère ensuite d'autres span.toto (.append), qui eux ne sont évidemment pas 'parsés' au chargement, et donc l'action ne se déclenche pas au clic!?!
    Je ne suis pas sûr de comprendre la fonction _init(). Il n'y a pas plus simple?

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    toutes les reponses sont au dessus ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Je ne suis pas sûr de comprendre la fonction _init(). Il n'y a pas plus simple?
    Tu veux dire plus simple que réunir toutes les instructions d’initialisation dans une même fonction ? Non.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/08/2012, 10h54
  2. Accepeter plusieurs mail sur un champs input
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/03/2009, 16h51
  3. contrôle sur plusieurs champs Input
    Par paolo2002 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/03/2008, 12h33
  4. [Conception] problème avec firefox sur les champs input type="file"
    Par maverick56 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 11/05/2007, 10h57
  5. Faire un where sur un champs date qui peut etre vide
    Par blueman dans le forum Oracle
    Réponses: 12
    Dernier message: 03/01/2006, 13h46

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