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 :

[IE]Ajout de texte dans une value


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 102
    Points : 108
    Points
    108
    Par défaut [IE]Ajout de texte dans une value
    Bonsoir tout le monde

    Voila, en ce moment j'ai des problèmes avec Internet Explorer, mon problème vient de la value d'un textarea.
    En faites, ma fonction créer un textarea, lui assigne une value, etc...
    Mais le problème sous IE, c'est qu'il me rajoute du texte en plus qui vient d'on ne sais où

    Donc voilà mon code :
    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
     
    function createTextarea(parent,id,content,cols,source){
    	content = "test";
    	var el = document.createElement('textarea');
    	alert(el.innerHTML);
    	if(navigator.appName == "Microsoft Internet Explorer"){
     
    		el.id = id;
    		alert("Avant = "+el.value);
    		el.value = "toto";
    		alert("Après = "+el.value);
    		el.cols = cols;
    		el.onkeyup = function(){adaptRows(this);exit(event,source);this.value = $('edition').value;}
    	}else{
    		alert("On rentre ici");
    		el.setAttribute('id',id);
    		el.setAttribute('value',content);
    		el.setAttribute('cols',cols);
    		el.setAttribute('onkeyup',"adaptRows(this);exit(event,'"+source+"');");
    	}
    	el.appendChild(document.createTextNode(content));
    	$(parent).appendChild(el);
    }
    Et donc, là lors de mon premier alert, il m'indique bien que ma value est vide, et lors du deuxième alert, il m'affiche bien que la value vaut toto, cependant lorsque IE affiche mon textarea, il m'affiche tototest.

    Donc en faites je ne comprend pas d'où peux venir le problème :s
    Et si par exemple, je garde la variable content sans la déclarer à nouveau dans la fonction, elle s'affichera alors deux fois, par exemple si content valais toto et que je ne la re-définie pas, alors dans la value j'aurai eut totototo, et je ne comprend vraiment pas, car lorsque je fais une alert, il m'affiche bien une seule fois toto, et le code marche parfaitement pour FF et Opera :s

    Voila, merci d'avance et bonne soirée

  2. #2
    Membre averti Avatar de htr999
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 331
    Points : 394
    Points
    394
    Par défaut
    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
     
    function createTextarea(parent,id,content,cols,source){
    	content = "test";
    	var el = document.createElement('textarea');
    	alert(el.innerHTML);
    	if(navigator.appName == "Microsoft Internet Explorer"){
     
    		el.id = id;
    		alert("Avant = "+el.value);
    		el.value = "toto";
    		alert("Après = "+el.value);
    		el.cols = cols;
    		el.onkeyup = function(){adaptRows(this);exit(event,source);this.value = $('edition').value;}
    	}else{
    		alert("On rentre ici");
    		el.setAttribute('id',id);
    		el.setAttribute('value',content);
    		el.setAttribute('cols',cols);
    		el.setAttribute('onkeyup',"adaptRows(this);exit(event,'"+source+"');");
    	}
    	el.appendChild(document.createTextNode(content));
    	$(parent).appendChild(el);
    }
    après les tests, je m'aperçois que IE ne prend pas en compte el.value = "toto";
    le fait que IE donne tototest c'est parce que tu as ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    el.appendChild(document.createTextNode(content));
    à la 2eme ligne du bas.

    j'ai inventé moi-même du code dans Body pour le test. essaie cela
    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
    <html>
    <head>
    <script>
    function createTextarea(parent,id,content,cols,source){
    	var el = document.createElement('textarea');
    	if(navigator.appName == "Microsoft Internet Explorer"){
    		el.id = id;
    		el.value = content;
    		el.cols = cols;
    		el.onkeyup = function(){adaptRows(this);exit(event,source);this.value = $('edition').value;}
    	}else{
    		el.setAttribute('id',id);
    		el.appendChild(document.createTextNode(content));
    		el.setAttribute('cols',cols);
    		el.setAttribute('onkeyup',"adaptRows(this);exit(event,'"+source+"');");
    	}
    	//el.appendChild(document.createTextNode(content));
     
    	elemParent = document.getElementById("parent");
    	elemParent.appendChild(el);
    	alert(elemParent.innerHTML);
    }
    </script>
    </head>
     
    <body>
    	<div id="parent"></div>
    	<script>
    		createTextarea("parent","nono","toto",5,"none");
    	</script>
    </body>
    </html>
    A+

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 102
    Points : 108
    Points
    108
    Par défaut
    Merci beaucoup, cette solution marche parfaitement pour IE

    Mais hélas pour FF et Opera il semblerait que sa soit obligatoire de mettre : el.appendChild(document.createTextNode(content)); car sinon il ne m'affiche pas de contenu dans mon textarea, ce qui donne donc au finale :

    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
     
    function createTextarea(parent,id,content,cols,source){
    	var el = document.createElement('textarea');
    	el.setAttribute('id',id);
    	el.setAttribute('cols',cols);
    	if(navigator.appName == "Microsoft Internet Explorer"){
    		el.setAttribute('value',content);
    		el.onkeyup = function(){adaptRows(this);exit(event,source);this.value = $('edition').value;}
    	}else{
    		el.appendChild(document.createTextNode(content));
    		el.setAttribute('onkeyup',"adaptRows(this);exit(event,'"+source+"');");
    	}
    	$(parent).innerHTML += "Contenu supplémentaire <br />";
    	$(parent).appendChild(el);
    }
    Et encore merci htr999 pour la solution pour IE

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

Discussions similaires

  1. Ajouter du texte dans une edit box
    Par raf_gug dans le forum MFC
    Réponses: 10
    Dernier message: 23/05/2013, 10h00
  2. Ajout de texte dans une popup via js
    Par max33370 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 02/06/2010, 16h12
  3. [JGraph] ajouter du texte dans une cellule
    Par publicStaticVoidMain dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 10/11/2009, 16h44
  4. Ajouter du texte dans une ListBox sans sauter de ligne
    Par walid_kerkoub dans le forum Composants VCL
    Réponses: 2
    Dernier message: 03/03/2008, 15h42
  5. Réponses: 1
    Dernier message: 25/10/2006, 22h03

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