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 :

onblur avec paramètre ne fonctionne pas sous IE


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Fabricant de ressorts - programmeur amateur
    Inscrit en
    Janvier 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Fabricant de ressorts - programmeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2003
    Messages : 70
    Par défaut onblur avec paramètre ne fonctionne pas sous IE
    Bonjour,

    j'ai écrit un petit programme qui propose des champs <input> générés en javascript à la suite d'un appel AJAX avec une sélection du contenu quand on clique et une fonction onblur qui s'occupe de sauvegarder la donnée saisie.
    mon code fonctionne parfaitement sur tous les navigateurs sauf Internet Explorer toutes versions testées.

    déclaration du input
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    		param1="var self = this;setTimeout(function() {self.select();}, 0);";
    		var elem7 = document.createElement("input");
    		elem7.setAttribute("value",res[10+i*32]);
    		elem7.setAttribute("size",4);
    		txt="elite"+i;
    		elem7.setAttribute("id",txt);
    		param="sauvetpe("+res[2+i*32]+","+i+",3)";
    		elem7.setAttribute("onblur",param); 
    		elem7.setAttribute("onfocus",param1);
    		div7.appendChild(elem7);
    j'ai vu que pour IE, il fallait utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elem7.onblur=fonctiononblur;
    mais je ne peux pas passer de paramètres dans ces conditions (mes paramètres me servent à savoir ou sauvegarder ma valeur saisie)
    quelqu'un aurait-il une solution d'aspect propre dans le code
    Je ne vais quand même pas être obligé de faire une déclaration comme celle-ci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elem7.onblur=function(){sauvetpe(res[2+i*32],i,3);}
    il me semble que c'est pas très clean comme programmation.
    Edit : et ça ne fonctionne pas sur safari mac, donc c'est plié d'avance. Je cherche vraiment une solution pour les neuneu qui ne savent pas utiliser autre chose que Internet Explorer
    merci d'avance

  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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    Je ne vais quand même pas être obligé de faire une déclaration comme celle-ci?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elem7.onblur=function(){sauvetpe(res[2+i*32],i,3);}

    Je ne vois pas ce qu'il y a de génant ...
    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
    Membre confirmé
    Homme Profil pro
    Fabricant de ressorts - programmeur amateur
    Inscrit en
    Janvier 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Fabricant de ressorts - programmeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2003
    Messages : 70
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elem7.onblur=function(){sauvetpe(res[2+i*32],i,3);}

    Je ne vois pas ce qu'il y a de génant ...
    c'est simple, après essai, ça ne fonctionne pas sur safari mac (objet de mon edit)
    Il va falloir que je teste le navigateur pour qu'une des fonction soit faite pour IE et l'autre (celle qui fonctionne bien aujourd'hui) pour les autres navigateurs?

  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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    http://jsfiddle.net/A2VTm/

    teste ça sous safari mac ...
    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 confirmé
    Homme Profil pro
    Fabricant de ressorts - programmeur amateur
    Inscrit en
    Janvier 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Fabricant de ressorts - programmeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2003
    Messages : 70
    Par défaut
    Ca va surement fonctionner, je crois que j'ai compris ou était le bug dans l'histoire et la raison pour laquelle ça ne fonctionne pas.

    Quand j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elem7.onblur=function(){sauvetpe(res[2+i*32],i,3);}
    i est la valeur de mon incrément dans une boucle for (i=0; i>nb; i++) {}

    donc, quand je fais ma fonction qui fonctionne correctement, je bloque la valeur de i en la mettant dans un champs texte,
    mais avec la fonction ci-dessus, il prend la valeur de i au moment ou j'exécute mon onblur.
    Donc, comment je fais pour bloquer la valeur de i dans la fonction à la valeur qu'il a au moment de ma boucle?

    A priori, safari mac lance correctement la fonction avec cette méthode

    merci de t'interesser à mon problème

  6. #6
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    d'ou la necessité de rattacher les paramètres à l'objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elem7.setAttribute('param',i)
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elem7.onblur=function(){sauvetpe(res[2+ this.param*32],this.param,3);}
    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 !

  7. #7
    Membre confirmé
    Homme Profil pro
    Fabricant de ressorts - programmeur amateur
    Inscrit en
    Janvier 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Fabricant de ressorts - programmeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2003
    Messages : 70
    Par défaut
    merci, c'est bien vu, mais j'ai un résultat undefined à la réponse de this.param c'est pas encore ça la réponse (d'un autre coté, je comprends pourquoi je n'y suis pas arrivé tout seul)

  8. #8
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    c'est a cause du setAttribute ...
    essaye ceci

    http://jsfiddle.net/A2VTm/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 !

  9. #9
    Membre confirmé
    Homme Profil pro
    Fabricant de ressorts - programmeur amateur
    Inscrit en
    Janvier 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Fabricant de ressorts - programmeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2003
    Messages : 70
    Par défaut
    En me basant sur ton exemple, j'ai modifié ainsi, et ça marche sur safari mac
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    elem6.param=res[2+i*32];
    		elem6.param2=i;
    		elem6.onblur=function(){sauvetpe(this.param, this.param2,2)}
    Il va falloir maintenant que je trouve un cobaye pour tester sur IE PC (j'ai pas de PC chez moi)

    Un grand merci pour ton aide, et je crois que je vais me souvenir de ça pendant très longtemps... Il faut que je l'adapte partout ou j'ai utilisé un onblur (sur plusieurs pages.)

    Edit : j'ai trouvé un cobaye qui m'a confirmé que ça tournait aussi sur IE...il ne me reste plus qu'à modifier tout mon programme pour que tout fonctionne sur tous les navigateurs

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

Discussions similaires

  1. [API HTML5] Jeu avec canvas ne fonctionne pas sous IE
    Par doudoulolita dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/07/2014, 15h55
  2. OnFocus et OnBlur ne fonctionne pas sous Google Chrome
    Par getz85 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/09/2009, 15h55
  3. Réponses: 2
    Dernier message: 18/06/2009, 11h15
  4. Réponses: 8
    Dernier message: 27/03/2009, 12h47
  5. Réponses: 3
    Dernier message: 06/06/2007, 18h45

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