Hello,
J'ai fait une page qui utilise du javascript. Ce code fonctionne très bien sous Firefox, mais pas sous IE.
Le but est d'avoir un bouton pour ajouter des champs et un pour les supprimer. Lorsqu'un de ces champs est modifié, le total de tous les champs est affiché...
Sous firefox, parfait. Sous IE, il ne se passe rien lors de la modification d'un champ (onKeyUp qui appele "addition()"). Le reste fonctionne très bien.
Une idée??
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90 <script type="text/javascript" src="/addition/js/texte-utils.js"> </script> <script language="javascript" type="text/javascript"> var requete = null; try { requete = new XMLHttpRequest(); } catch (essaimicrosoft) { try { requete = new ActiveXObject("Msxml2.XMLHTTP"); } catch (autremicrosoft) { try { requete = new ActiveXObject("Microsoft.XMLHTTP"); } catch (echec) { requete = null; } } } if (requete == null) alert("Error creating request object!"); function addition() { var path="/addition/jsp/addition.jsp?nb="+c2.length; var i=0; while(i<c2.length){ var iS = i.toString(); var byId = "nb"+iS; path = path+"&nb"+iS+"="+document.getElementById(byId).value; i++; } requete.open("GET", path, true); requete.onreadystatechange = actualiserPage; requete.send(null); } function actualiserPage() { if (requete.readyState == 4) { if (requete.status == 200) { /* Mettre à jour le champ */ nouveauResult = requete.responseText; var result = document.getElementById("result"); remplacerTexte(result, nouveauResult); } else{ alert("Erreur! Le statut de la requête est " + requete.status); } } } var c,c2, ch; // ajouter un champ avec son "name" propre; function plus(){ c=document.getElementById('cadre'); c2=c.getElementsByTagName('input'); ch=document.createElement('input'); ch.setAttribute('type','text'); ch.setAttribute('name','nb'+c2.length); ch.setAttribute('id','nb'+c2.length); ch.setAttribute('onKeyUp','addition()'); c.appendChild(ch); ch.focus(); document.getElementById('sup').style.display='inline'; } // supprimer le dernier champ; function moins(){ if(c2.length>0){ c.removeChild(c2[c2.length-1]); } if(c2.length==0){ document.getElementById('sup').style.display='none'; } addition(); } </script> <form id="frm" action=""> <p> <input type="button" value="Ajouter un champ pour l'addition" onclick="plus()" /> <input type="button" style="display:none" id="sup" value="Supprimer le dernier champ" onclick="moins()" /> </p> <div id="cadre" style="margin-left:100px;width:200px"> </div> Total: <span id="result">0</span> </form>
Ce code fait partie d'une portlet, mais je pense que c'est pas très important pour la compréhension du problème...
Merci
Partager