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

JavaScript Discussion :

Comment ajouter un onblur lors de la création d'un input?


Sujet :

JavaScript

Vue hybride

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 19
    Par défaut Comment ajouter un onblur lors de la création d'un input?
    Bonjour,

    J'expose le contexte:
    Je crée un formulaire qui doit s'adapter au fur et a mesure qu'il est remplis. A savoir, il possède 2 input text au départ (nommés qtt0 et reduc0), dés que l'un de ces éléments perd le focus, une fonction javascript est déclenchée et vérifie qu'ils sont remplis, si c'est le cas, elle ajoute 1 ligne au tableau et dans cette ligne place deux nouveaux champs (només qtt1 et reduc1).

    L'idée c'est que ces champs se comportent de la même façon que les premiers et soient capable de créer deux nouveaux champs ... et ainsi de suite.

    La fonction est déclenché sur le onblur et possède un paramètre (le numéro de la ligne).

    Arborescence (pour mieux comprendre)
    form
    --table
    ----thead.../thead
    ----tbody
    ------tr
    --------td
    ----------input
    --------/td
    --------td
    ----------input
    --------/td
    ------/tr
    ------tr
    --------td
    ----------input
    --------/td
    --------td
    ----------input
    --------/td
    ------/tr
    ------...
    ----/tbody
    --/table
    /form

    Mon problème est le suivant:
    Je ne parviens pas a attribuer onblur dans les nouveaux inputs. le processus s'arrête donc dés que l'utilisateur a entré les premiers.

    (Il semblerais que le problème soit l'argument de la fonction.)
    J'ai essayé deux techniques et aucune des deux n'a fonctionné. La première d'entre elles etait de rentrer un text correspondant au nom de ma fonction avec le paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function maFonction(num)
    {
    	[...]
    	var input1 		= document.createElement('input');
    	input1.onblur	= 'maFonction('+(num+1)+');';
    	[...]
    }
    la seconde a été de créer une fonction dynamique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function maFonction(num)
    {
    	[...]
    	var input1 		= document.createElement('input');
    	input1.onblur	= function()
    				{
    					maFonction(num+1);
    				};
    	[...]
    }
    Voila, si vous avez une idée.
    Je précise tout de même que les autres éléments (name, id, etc) sont affectés par la même méthode (input1.name=...) et qu'ils sont effectivement affectés dans ma page.

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    enlève le paramètre de maFonction() et remplace le par une variable globale.
    Tu pourras faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input1.onblur = maFonction;
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 19
    Par défaut
    Bonjour,

    En fait, le paramètre permet de savoir quel champ envoie l'évènement. Si il s'agit de la dernière ligne, l'avant dernière ou la première etc. Une variable globale m'indiquera toujours la même valeur quel que soit l'initiateur de l'évènement...

    Je vais regarder d'ailleur s'il y a moyen de récupérer le père d'un évènement en js. (le numéro du champ étant contenu dans l'id de l'input, je pourrais alors récupérer l'emplacement exact par rapport au nombre total d'éléments ... )

  4. #4
    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
    1
    2
    3
    4
    input1.onblur	= function(num)
    				{
    					maFonction(num+1);
    				};
    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 !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 19
    Par défaut
    Je viens d'essayer en passant en paramètre la variable (comme l'indique space frog) mais le onblur n'apparait toujours pas dans les inputs ...

    Il n'y a pas moyen de récupéré le dernier évènement levé?

    Pas si tu l'incrémentes à chaque création d'input
    il me semble que si j'incrémente a chaque fois, si j'ai 4 champs, ma variable globale sera a 4, j'en rajoute un via ma fonction, elle passera a 5, si mon évènement proviens du 1er input, j'aurais 5 ... non 1 (puisqu'elle est incrémentée pour la page courante pas juste pour le input).

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par illeriane Voir le message
    il me semble que si j'incrémente a chaque fois, si j'ai 4 champs, ma variable globale sera a 4, j'en rajoute un via ma fonction, elle passera a 5, si mon évènement proviens du 1er input, j'aurais 5 ... non 1 (puisqu'elle est incrémentée pour la page courante pas juste pour le input).
    Tout dépend à quoi te sert ce num au final.
    Je croyais que c'était le nombre de champs déjà présents ...

    Et puis ça revient au même il me semble : il faut bien que tu le définisses avant de le passer en paramètre ....
    Alors paramètre ou variable globale, le résultat est le même.

    A+

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par illeriane Voir le message
    Une variable globale m'indiquera toujours la même valeur quel que soit l'initiateur de l'évènement...
    Pas si tu l'incrémentes à chaque création d'input ...

    Mais la version de SpaceFrog est plus propre

    A+

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/09/2010, 10h05
  2. Réponses: 3
    Dernier message: 14/04/2010, 01h59
  3. Réponses: 2
    Dernier message: 29/05/2007, 22h39
  4. [c#] Comment choisir où enregistrer un xml lors de sa création?
    Par Julien1987 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 21/12/2006, 10h26
  5. Réponses: 1
    Dernier message: 04/05/2006, 16h17

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