Selecties tellen

Status
Niet open voor verdere reacties.

ViceStar

Gebruiker
Lid geworden
19 mei 2008
Berichten
16
Ik heb volgende fomulier:

Code:
<form action="next.asp" name="multi" method="post">
<select name="genre" size="30" multiple="multiple" id="genre" onChange="alert('Are you sure you want to give us the deed to your house?')" >
<%
Do While Not objRec.EOF
%>
<option value="<%= objRec.Fields("Naam_Id").Value %>"><%= objRec.Fields("Naam").Value %></option>
<%

objRec.MoveNext
Loop
%>


</select>  

<input type="submit" value="druk" name="druk" />
</form>

Het formulier event select wordt gegenereert door asp met waardes vanuit een database. Dus ene keer kunnen hier 2 selecties staan en andere keer 10.

Door het atribuut multiple="multiple" kan ik meerdere waardes in de dropdown selecteren. Wat ik wil is dat javascript telt hoeveel waardes ik geselecteerd heb. dus als ik er 5 selecteerd moet het "5" zijn en als ik dan weer eentje deselecteer moet het "4" zijn.

Weet iemand hier een code voor? Of tips? De moeilijkheid zit hem namelijk dat de opties dynamisch zijn en dat het in een select type zit.
 
Deze javascript-functie werkt in FF (ik heb geen IE, dus in IE kan ik het niet testen)
[js]function count(selectgeval)
{
var geselecteerd = 0;
for(var i=0;i<selectgeval.length;i++)
{
if (selectgeval.selected)
{
geselecteerd++;
}
}
alert(geselecteerd);
}[/js]

Als je je select verandert in dit:
HTML:
<select name="genre" size="30" multiple="multiple" id="genre" onChange="alert('Are you sure you want to give us the deed to your house?')" onClick="count(this)">
krijg je elke keer als er een option ge(de)selecteerd wordt een alert te zien met het aantal geselecteerde opties. De javascript-code is misschien niet heel efficient, omdat het elke keer alle opties langsgaat om te kijken of het geselecteerd is, maar tenzij de lijst heel groot is heb je daar geen last van.
 
BEdankt voor de oplossing. Ik heb de code iets aangepast zodat hij de waarde in een tekstbox laad:

Code:
<script>
function count(selectgeval)
{
        var geselecteerd = 0;
        for(var i=0;i<selectgeval.length;i++)
        {
                if (selectgeval[i].selected)
                {
                        geselecteerd++;
                }
        }
		document.multi.tekstboxx.value = geselecteerd;
}
</script>

<form action="index3.asp" name="multi" method="post">
<select name="genre" size="30" multiple="multiple" id="genre" onClick="count(this)">
<%
Do While Not objRec.EOF
%>
<option value="<%= objRec.Fields("Naam_id").Value %>"><%= objRec.Fields("Naam").Value %></option>
<%

objRec.MoveNext
Loop
%>


</select>  
<input type="text" name="tekstboxx" value="">
<input type="submit" value="druk" name="druk" />
</form>

Alleen het probleem is dat als je de eertse aanklikt hij deze nog niet telt. Dus bij 1 geselecteerd krijg ik waarde 0 bij 2 geselecteerd krijg ik de waarde 1. en als ik dan nog keer klik verschuift hij wel naar 3. Klopt dus niet helemaal. Heb je nog tips?

Edit: Het is me gelukt ik heb onClick veranderd in onChange en dan wordt er goed geteld. Thanxs voor de oplossing.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan