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 :

[POO] Ecouteur onkeypress crée a la volé sur form


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 233
    Par défaut [POO] Ecouteur onkeypress crée a la volé sur form
    Voila, j'ai un tableau crée par le javascript et dont chaque cellules est un input. Je desire effectuer un control lors de la saisie afin de garantir l'exactitude des informations qui seront insérées.

    Donc je crée un ecouteur a la volée juste apres mon appendChild qui appel une fonction qui controle ma saisie.

    J'etais plutot content que mon code marche du premier coup sur FF, Safari, Opera mais j'ai vite dechanté avec IE6....

    Il me genere l'erreur suivante : 'document.forms.structure.elements[...]' a la valeur Null ou n'est pas un objet.

    Avec le alert les navigateurs me retourne : [object HTMLInputElement] mais IE6 me retourne 'undefined'.

    Pourtant je crée l'écouteur apres le appendChild, donc théoriquement mon objet est crée.

    Qlqchose m'echappe, pourriez vous m'aider svp ? 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
    	for (var i = 0 ; i < 10 ; i++) {
    		cell = document.createElement("td");
    		cellInput = document.createElement("input");
    		// Attributs des INPUT
    		cellInput.setAttribute("type","text");
    		cellInput.setAttribute("name",cellNames[i]+nbClasse);
    		cellInput.setAttribute("value","0");
    		// Insertion DOM
    		cell.appendChild(cellInput);
    		// Ajout de l'ecouteur
    		row.appendChild(cell);
    //		alert(fieldToListen+"\n"+typeof(fieldToListen));
    		fieldToListen = cellNames[i]+nbClasse;
    		alert(document.forms["structure"].elements[fieldToListen]);
    		document.forms["structure"].elements[fieldToListen].onkeypress = traiterTelephone;
    	}

  2. #2
    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
    première remarque : se méfier des attribution de name en runtime sous IE ...



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms["structure"].elements[fieldToListen].onkeypress =function(){ traiterTelephone();}
    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 !

  3. #3
    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,
    Citation Envoyé par boutmos Voir le message
    Pourtant je crée l'écouteur apres le appendChild, donc théoriquement mon objet est crée.
    l'objet oui, mais tu utilises ici la notion de collection (du form).
    Celle-ci ne l'est peut-être pas encore.
    As-tu essayé via l'id (en l'ajoutant en plus du name, avec un compteur pour qu'il soit unique) ?
    Tu pourras ainsi faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('id_input'+compteur).onkeypress = traiterTelephone;
    et cibler le nouvel objet indépendamment des collections ...

    A+

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 233
    Par défaut
    j'etais entrain de tester la methode suivante :

    cellInput.onKeyPress = function(){traiterTelephone}

    çà ne me genere pas d'erreur mais la fonction traiterTelephone n'est visiblement pas executée...

    Je vais essayer vos methodes. Merci, je vous averti des que possible

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 233
    Par défaut
    document.forms["structure"].elements[fieldToListen].onkeypress =function(){ traiterTelephone();}


    EDIT : çà marche dans la construction . Aucunes erreur des 2 coté mais la fonction n'est pas executée.

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 233
    Par défaut
    J'espere pas me precipiter dans mes test mais visiblement la methode de Ebzzz fonctionne bien deja sous IE6 et FF.

    J'ai donc dans la construction des cellules INPUT rajouté un id : "cell"+fieldToListen et par la methode getElementById(id) j'y ajoute l'ecouteur.

    merci beaucoup, je me doutais un peu que c'etait dans la generation de l'objet mais j'avous que la çà a depassé ma petite experience du DOM

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

Discussions similaires

  1. Simulateur de vol sur PC
    Par Stéphane-M dans le forum Projets
    Réponses: 15
    Dernier message: 30/11/2011, 12h41
  2. Crée un Fichier Excel sur VBA
    Par faressam dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 07/08/2008, 16h44
  3. [POO] Faire afficher un objet dés Onclick sur un lien
    Par bilou95 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 10/10/2007, 08h56
  4. fonction impossible sur form créée a la volée :s
    Par avogadro dans le forum Débuter
    Réponses: 4
    Dernier message: 06/04/2006, 22h37
  5. Réponses: 10
    Dernier message: 05/12/2005, 01h25

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