Anzahl selektierter select-Felder

megatom

Mitglied
Aloah !
Ich habe 3 select-Felder, und möchte gerne ein javascript, welches mir ausgibt wie viele der 3 Felder ausgewählt sind.
Habe leider noch keine rechte Idee...
Gibts da eine einfache Lösung ?
Danke !
 
Was verstehst du unter "ausgewählt"?
Rein technisch gesehen sind <select>'s immer ausgewählt, entweder über das Attribut "selected" in den Optionen oder wenn nichts gewählt wurde die 1. Option
 
Aloah !
Ok hast recht.
Dann nehmen wir an dass option 1 den Wert 0 hat.
Also müsste ich dann rausfinden wie viele Felder einen Wert grösser 0 haben !
 
Wenn bei dir jeweils die 1. Option mit "nicht ausgewählt" gleichbedeutend ist, dann schaue nach, bei wievielen der Listen die Eigenschaft selectedIndex grösser als 0 ist...und du hast das gewünschte Ergebnis :)

Code:
<html>
<head>
<title>Titel</title>
<script type="text/javascript">
<!--
function zaehlen(f)
{
  z=0;
  for(s=0;s<f.getElementsByTagName('SELECT').length;++s)
    {
      z+=(f.getElementsByTagName('SELECT')[s].selectedIndex>0)?1:0;
    }
  alert('In ' + z + ' Liste' + ((z==1)?'':'n') + ' wurde gewählt');
}
//-->
</script>
<style type="text/css">
<!--
-->
</style>
</head>
<body>
<form>
<select>
<option>wähle was
<option>wert1
<option>wert2
<option>wert3
</select>
<select>
<option>wähle was
<option>wert1
<option>wert2
<option>wert3
</select>
<select>
<option>wähle was
<option>wert1
<option>wert2
<option>wert3
</select>
<input type="button" onclick="zaehlen(this.form)" value="zählen">
</form>
</body>
</html>
 
Zuletzt bearbeitet:
Aloah !
Danke erstmal.
Ich habe jetzt folgendes draus gemacht, da ich ja die Summe brauche :
Code:
function zaehlen(f)
{
  z=0;
  	for(s=0;s<f.tn_techniker.length;++s)
    {
      z+=(f.tn_techniker[s].selectedIndex>0)?1:0;
    }
    for(s=0;s<f.tn_techniker_2.length;++s)
    {
      z+=(f.tn_techniker_2[s].selectedIndex>0)?1:0;
    }
	for(s=0;s<f.tn_techniker_3.length;++s)
    {
      z+=(f.tn_techniker_3[s].selectedIndex>0)?1:0;
    }
  
  alert(z);
}
Leider ist das Ergebnis immer 0 :(
 
Aloah !
Das ganze ist ein wenig lang ...
Aber hier mal der Anfang des ersten select:
Code:
<select class="textbox" name="tn_techniker" onchange="zaehlen(this.form)" >
		<option value="0">...</option>
<option value="1" >blub</option>...</select>

genauso sind die beiden anderen auch aufgebaut.
 
Hast du da ausser den 3 Listen noch mehr Listen drinnen im Formular? Wenn nein, sollte meine Funktion eigentlich so klappen, wie ich sie gepostet habe.
 
Du könntest es so machen...das ist flexibler, falls du die Funktion noch mal woanders benötigst:
Code:
function zaehlen(f,r)
{
  z=0;
  for(s=0;s<f.getElementsByTagName('SELECT').length;++s)
    {
      
      z+=(
            f.getElementsByTagName('SELECT')[s].selectedIndex>0
            &&
            String(f.getElementsByTagName('SELECT')[s].name).match(r)
         )
          ?1:0;
    }
  alert('In ' + z + ' Liste' + ((z==1)?'':'n') + ' wurde gewählt');
}
Der 1. Parameter ist wieder das Formular, der 2. ein RegExp, der den Namen aller gewünschten Listen trifft.
In diesem Fall müsste der Aufruf lauten:

Code:
zaehlen(this.form,/^tn_techniker(|_(2|3))$/)
 

Neue Beiträge

Zurück