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 :

Attacher un évènement à des contrôles Input Text


Sujet :

jQuery

  1. #1
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut Attacher un évènement à des contrôles Input Text


    J'ai un tableau dans lequel se trouve des contrôles Input Text. A chaque ligne, les contrôles se répètent en se numérotant.
    Il faut que j'intercepte l'événement Change pour inscrire les valeurs dans le DOM sinon, du côté client (ASP/VB.net), les valeurs ne sont pas considéré comme changées.
    Problème, cela n'a aucun effet, les contrôles sont pourtant bien trouvés si je debug le déroulement de la boucle:

    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
    function TriggerChangeTextBox() {
        for (var i = 1; i < 12; i++) {
            var txtMS = $(':input[name$="txtMS' + i + '"]');
            var txtPcentMS = $(':input[name$="txtPcentMS' + i + '"]');
            var txtObs = $(':input[name$="txtObs' + i + '"]');
     
            /* Permet de capturer l'évènement Change. */
            txtMS.trigger('change');
            txtPcentMS.trigger('change');
            txtObs.trigger('change');
     
            /*  Inscription de la valeur du TextBox directement dans le DOM,
            sinon la valeur ne sera pas considéré comme changée côté serveur. */
            txtMS.change(function () {
                txtMS.attr('value', txtMS.val());
            });
            txtPcentMS.change(function () {
                txtPcentMS.attr('value', txtPcentMS.val());
            });
            txtObs.change(function () {
                txtObs.attr('value', txtObs.val());
            });
        }
    }
    Du côté client, les contrôles sont nommés de la sorte (exemple pour la ligne 1):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ctl00_MainContent_txtMS1
    ctl00_MainContent_txtPcentMS1
    ctl00_MainContent_txtObs1
    Si quelqu'un voit où ça peut clocher... D'ailleurs, est-ce qu'il y a un autre moyen d'ajouter les valeurs dans le DOM ?


    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Apparemment jQuery n'aime pas trop passer par des variables pour ce genre de pratique, comme ceci ça fonctionne:
    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
    function TriggerChangeTextBox() {
        for (var i = 1; i < 12; i++) {
            /* Permet de capturer l'évènement Change. */
            $(':input[name$="txtMS' + i + '"]').trigger('change');
            $(':input[name$="txtPcentMS' + i + '"]').trigger('change');
            $(':input[name$="txtObs' + i + '"]').trigger('change');
     
            /*  Inscription de la valeur du TextBox directement dans le DOM,
            sinon la valeur ne sera pas considéré comme changée côté serveur. */
            $(':input[name$="txtMS' + i + '"]').change(function () {
                $(this).attr('value', $(this).val());
            });
            $(':input[name$="txtPcentMS' + i + '"]').change(function () {
                $(this).attr('value', $(this).val());
            });
            $(':input[name$="txtObs' + i + '"]').change(function () {
                $(this).attr('value', $(this).val());
            });
        }
    }
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $(txtMS).trigger('change');
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     $(':input[name$="txtMS' + i + '"]').on('change',function () {
                $(this).attr('value', $(this).val());
            });
    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
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Oui ça marche également bien comme ceci. Merci

    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
    function TriggerChangeTextBox() {
        for (var i = 1; i < 12; i++) {
            var txtMS = $(':input[name$="txtMS' + i + '"]');
            var txtPcentMS = $(':input[name$="txtPcentMS' + i + '"]');
            var txtObs = $(':input[name$="txtObs' + i + '"]');
     
            /* Permet de capturer l'évènement Change. */
            $(txtMS).trigger('change');
            $(txtPcentMS).trigger('change');
            $(txtObs).trigger('change');
     
            /*  Inscription de la valeur du TextBox directement dans le DOM,
            sinon la valeur ne sera pas considéré comme changée côté serveur. */
            $(txtMS).on('change', function () {
                $(this).attr('value', $(this).val());
            });
            $(txtPcentMS).on('change', function () {
                $(this).attr('value', $(this).val());
            });
            $(txtObs).on('change', function () {
                $(this).attr('value', $(this).val());
            });
        }
    }

    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

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

Discussions similaires

  1. Lier des contrôles de texte
    Par petit rabot dans le forum Word
    Réponses: 14
    Dernier message: 28/01/2011, 16h05
  2. Suspendre la gestion des évènements des contrôles de l'UI
    Par fragmonster dans le forum Windows Forms
    Réponses: 1
    Dernier message: 16/11/2009, 18h25
  3. [C#/Custom Control] Comment personnaliser les évènements des contrôles enfants ?
    Par Anto03 dans le forum Windows Presentation Foundation
    Réponses: 21
    Dernier message: 26/09/2008, 08h45
  4. Réponses: 1
    Dernier message: 20/04/2008, 19h02
  5. Repeater : évènements des contrôles enfants
    Par luimême dans le forum ASP.NET
    Réponses: 1
    Dernier message: 29/11/2007, 10h05

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