Bonjour,

En gros ma question se résume au titre du post.

J'ai un select avec beaucoup d'options. La liste déroulante a un ascenseur très petit ce qui ne facilite pas du tout la sélection d'un élément.
J'ai donc pensé à filtrer un peu ce select en choisissant à l'aide d'un autre select la première lettre.
En choisissant par exemple B sur ce nouveau select je veux que le premier select s'actualise en laissant seulement les options commençant par un B. Ce serait l'idéal pour réduire le nombre d'éléments dans le select.

Bref pour cela j'ai fait une petite fonction javascript (je maitrise pas trop cet outil encore) mais je m'emmêle avec les index du select !!

Bon je vous montre le code!
Je vous rappelle que j'ai deux select :
- un avec bcp bcp d'options et meme un peu trop (form : noms, select : nom)
- un avec les lettres de l'alphabet pour justement reduire le nombre d'options de l'autres select (form : tri, select : alphab)
voilà la fonction :

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
 
  <script language="javascript">
  function maj() 
  {
  var i;
  var j=0;
  var nb = document.forms.noms.nom.options.length;
    for(i=0;26>i;i++)
    {
      if (document.forms.tri.alphab.options[i].selected)
      {
        var lettre1 = document.forms.tri.alphab.options[i].text;
	for(j=0;nb>j;j++)
	{
 
	    var nom = document.forms.noms.nom.options[j].text;
	    var lettre2 = nom.slice(0,1);
 
	    if (lettre2 != lettre1)
	    {
	      document.forms.noms.nom.options[j]=null; 
	    }
	}
      }
    }
  }
 
  </script>
En fait le pb c'est qu'il ne parcourt pas tous les éléments du tableau.
S'il y a 14 éléments l'index ne va pas de 0 à 13... il va jusqu'à 7 et après il y a des valeurs indéfinies apparemment... bref je comprends pas trop ce qu'il se passe!

Sinon autre question : une fois que j'aurai fait cela mon option sera bien épurgé en choisissant une lettre mais si je veux choisir une nouvelle lettre comment récupérer toutes les anciennes valeurs. Apparemment c'est pas possible parce que je les aurais supprimées..

Voilà!

Merci pour votre aide !