RESOLU Perte de donnée d'un formulaire sur firefox

Bonjour,

je suis débutant en javascript. J’ai un formulaire avec une donnée. Je copie le contenu de mon formulaire pour pouvoir l’imprimer. Cela marche très bien sur Internet Explorer mais hélas pas sur firefox :frowning:

Cela vient peut-être de cette fonction la :


document.getElementById(obj).innerHTML;

Quelqu’un pourrait-il m’aider à trouver la solution.
Voici mon code :


<div id='frs'>
<form name='vma'>
Votre Vitesse <input size="2" maxlength="5" name="vitesse" value="15" type="text">
<input value="Mise à jour" onclick="update()" type="button">
<input type="text" id="toto" name="x200" >
<input type="button" value="Imprimer en test" onclick="imprime_zone('test', 'frs')" >
</form>
</div id='frs'>

<script type="text/Javascript">
function update() {
	document.vma.x200.value="10";
} 

function imprime_zone(titre, obj)
{
// Définie la zone à imprimer
var zi = document.getElementById(obj).innerHTML;

// Ouvre une nouvelle fenetre
var f = window.open("", "ZoneImpr", "height=500, width=600,toolbar=0, menubar=0, scrollbars=1, resizable=1,status=0, location=0, left=10, top=10");

// Définit le Style de la page
f.document.body.style.color = '#000000';
f.document.body.style.backgroundColor = '#FFFFFF';
f.document.body.style.padding = "10px";

// Ajoute les Données
f.document.body.title = titre;
f.document.body.innerHTML += " " + zi + " ";

// Imprime et ferme la fenetre
f.window.print();
//f.window.close();
return true;
}
</script>

Merci d’avance :wink:
Edité le 27/10/2007 à 09:45

Ce n’est pas étonnant comme comportement : le texte est contenu dans value, pas dans .innerHTML. InnerHTML c’est le texte contenu dans la balise . Donc, quand tu écris dans le textarea faut pas s’attendre à voir quelque chose : tu ne touche pas au code HTML de cette façon.

Pourrais-tu me dire ce que je dois modifier pour que cela fonctionne sur firefox

Je ne sais pas. Tu peux tenter ça (une seule et unique fois, j’ai pas la classe des textarea, donc je met HTMLTextarea)

if (HTMLTextarea.prototype.__defineGetter__) {
  HTMLTextarea.prototype.__defineGetter__("innerHTML", function() {
    return this.value; // + escape < en < mais bref, 
  });
}

Re,

merci de ta participation, c’est super sympa.
Juste pour te dire que cela marche très bien sur internet explorer, je ne vois pas pourquoi cela ne marche pas sur firefox.
Dans .innerHTML est inclus tout ce qu’il y a entre mes div.

Pourrais-tu tester mon script ?

Je répète ce que j’ai dis : pour moi, c’est un comportement normal de Fx. ie: ce qui est écrit après ne fait pas parti du tout du code HTML de la page une fois chargée. Ça pareil débile, mais pas tant. Et je pense, que tu dois avoir moyen (via la méthode que je te donne, à travailler certes) de corriger cela.

Maintenant :

  1. j’ai pas testé ton script, je n’ai guère de temps pour cela
  2. j’utilise peu ou prou innerHTML (je préfère manipuler DOM directement)

dac je vais chercher dans ce sens-la
merci de ton aide :wink:

Salut,

La valeur de mon INPUT se trouvait bien dans value.
Ensuite, j’ai fait un replace pour mettre la valeur.

Voici ce que j’ai remplacé ou ajouté :


<input name="x200" id="x200" value="" type="text" >
zi = zi.replace('id="x200" value=""', 'id="x200" value='+document.vma.x200.value);

merci