Bonjour,

J'ai réalisé un bout de code pour avoir automatiquement les villes et le département en fonction d'un code postal.
Le problème est que lorsque mon code s'execute, mon navigateur se bloque entièrement...

De plus, je veux afficher un message "Patientez svp..." dans la liste déroulante des villes mais cela marche qu'avec Firefox, pas avec IE...

Voici mon code js :
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
 
<script language="javascript">
 
function ajax()
 {
  codepostal=document.create_account.postcode.value;
  liste=document.create_account.city;
  if (codepostal.length == 5)
  {
    var xhr=null;
    //Firefox
    if (window.XMLHttpRequest) { 
       xhr = new XMLHttpRequest();
    }
    //IE
    else if (window.ActiveXObject) 
      {
      xhr = new ActiveXObject("Microsoft.XMLHTTP");
      }
    //affichage du message d'attente
    liste.selectedIndex=0;  
    liste.item(0).value="0";
    liste.item(0).text="Patientez svp...";
 
   //on définit l'appel de la fonction au retour serveur
     xhr.onreadystatechange = function() { recherche(xhr); };
 
    //appelle du fichier insee.xml
    xhr.open("GET", "http://.../insee.xml",true);
    xhr.send(null);
    return false;
   }
 }
 
function recherche(xhr)
 {
 
       var docXML= xhr.responseXML;
       //on récupère les villes
       var villes = docXML.getElementsByTagName("Commune");
       //on récupère les départements
       var dpt = docXML.getElementsByTagName("Departement");
       //on récupère les codes postaux
       var cp = docXML.getElementsByTagName("Codepostal");
       //on récupère le code postal saisi
       var code = document.create_account.postcode.value;
       departement = null;
       liste=document.create_account.city;
 
       j=1;
       tabVilles=new Array();
       tabVilles[0]="Choisissez votre ville";
       //boucle pour récupérer les villes et le département correspondant au code postal saisi
       for (i=0;i<villes.length;i++)
	      {
         if(cp.item(i).firstChild.data==code)
          {
            tabVilles[j] = villes.item(i).firstChild.data;
            j++;
            departement = dpt.item(i).firstChild.data
          }
	      }
 
	     liste.length=j;
 
	     //si on a qu'une ville on l'affiche par défaut
	     if(liste.length==2)
	       {liste.selectedIndex=1;}
	       //sinon on se place sur la première valeur : "Choisissez votre ville"
	     else liste.selectedIndex=0;
 
	     //boucle pour remplir la liste déroulante des villes
	     for (k=0;k<j;k++)
	       {
          liste.options[k].value=k;
          liste.options[k].text = tabVilles[k];
         }
        //affichage du département dans le champ de texte departement
	     document.create_account.state.value=departement;
 
 }
 
</script>
Merci pour votre aide.