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 :

Comportement bizarre avec un input hidden


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 Comportement bizarre avec un input hidden


    Dans un formulaire ASP.Net, j'ai un fonction JavaScript qui permet de demander une confirmation de suppression que voici:
    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
    30
    31
    32
    33
    34
    function confirmAnnuler(mode, txt) {
        var msg = "Etes-vous sûr de vouloir ";
     
        switch (mode) {
            case "modif":
                msg += txt;
                break;
     
            case "ajout":
                msg += txt;
                break;
     
            case "suppr":
                msg += txt;
                break;
        }
     
        var hfConfirm = document.createElement("INPUT");
        hfConfirm.type = "hidden";
        hfConfirm.name = "hfConfirm";
     
        if (confirm(msg)) {
            hfConfirm.value = "true";
            document.forms[0].appendChild(hfConfirm);
     
            return true;
        }
        else {
            hfConfirm.value = "false";
            document.forms[0].appendChild(hfConfirm);
     
            return false;
        }
    }
    Ca fonctionne bien sauf lorsque cette fonction est appelée plusieurs fois. Si par exemple, une fois j'annule la suppression d'une donnée puis la fois suivante je confirme, au lieu de me remplacer la valeur de mon input, le code me la concatène avec l'ancienne valeur. Je me retrouve du coup avec une valeur de "false, true" ce qui pose énormément de problème. Pour information, la page n'est pas reconstruite à chaque fois, le formulaire se trouve dans UpdatePanel. J'ai tenté de supprimer le input en jQuery avant la création d'un nouveau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try {
        $("#ctl00_contenu_hfConfirm").remove();
    }
    catch (e) {
        message = e.Message;
    }
    Mais le résultat est identique, pareil si je force le contenu à vide avant de mettre la bonne valeur. Quelqu'un peut me dire comment résoudre ce problème s'il vous plait ?


    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
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Salut,

    Suite à une lecture rapide, si je comprends bien, tu construis un nouvel input à chaque fois, avec un même nom. Plus tard, je ne sais pas comment tu relis la valeur mais ces multiples créations sont mal interprétées et tu obtiens une sorte de tableau de valeurs des input ayant le même nom.

    Ton input ne pourrait-il pas être créé d'office au chargement de la page afin de n'avoir plus qu'à modifier sa valeur ?

  3. #3
    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
    Citation Envoyé par vermine Voir le message
    Ton input ne pourrait-il pas être créé d'office au chargement de la page afin de n'avoir plus qu'à modifier sa valeur.
    J'ai bien essayé de placer sur la page un contrôle de ce type depuis le mode design de Visual Studio sauf que, lorsqu'en JavaScript, je lui alloue une valeur, lorsque je récupère ce contrôle côté serveur (VB.Net), le contenu vaut Nothing

    Pourquoi également, il ne tient pas compte de mon test de suppression ?
    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 !

  4. #4
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Arf. Pour avoir une idée plus claire de ce qu'il se passe, il faudrait nous donner le HTML généré par Visual Studio. Sinon, il doit être possible de créer en JavaScript (ou jQuery) l'input au chargement de la page.

  5. #5
    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
    Citation Envoyé par vermine Voir le message
    Arf. Pour avoir une idée plus claire de ce qu'il se passe, il faudrait nous donner le HTML généré par Visual Studio. Sinon, il doit être possible de créer en JavaScript (ou jQuery) l'input au chargement de la page.
    Je viens de tester et ça fonctionne avec une création dynamique au démarrage de la page, juste après le chargement du DOM:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $(document).ready(function () {
        $('<input>').attr({
            type: 'hidden',
            id: 'hfConfirm',
            name: 'hfConfirm'
        }).appendTo('form');
    });
    Si je fait des affectations $("#hfConfirm").prop('value', 'true'); ça fonctionne parfaitement, je n'ai qu'une seul valeur et la bonne de surcroit ! Merci tout plein
    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. [XSL-FO] comportement bizarre avec tableau
    Par titouille dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 25/11/2009, 12h47
  2. submit bizarre avec un input file.
    Par hibour dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/11/2009, 17h23
  3. [A-07] Comportement bizarre avec Jointure
    Par mayekeul dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 06/02/2009, 12h48
  4. Comportement bizarre avec le SQL a la carte
    Par fatatov dans le forum Deski
    Réponses: 2
    Dernier message: 11/07/2008, 16h47
  5. [TRANSAQ SQL] INSERT comportement bizarre avec les REAL
    Par argyronet dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/12/2005, 11h47

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