Toon posts:

Hoeveel options geselecteerd in select*

Pagina: 1
Acties:

Verwijderd

Topicstarter
hallo ik heb 6 selectfields die multiple zijn. Je kunt dus meerdere waarden kiezen.

nu wil ik met js een validatie doen. Er moet gekeken worden of er minimaal 1 en maximaal 3 opties zijn geselecteerd per select veld.

Kan iemand mij uitleggen hoe dit moet? En het liefst in een functie of iets dergelijks ander moet ik zes keer dezelfde code plaatsen.

Ik heb al verschillende dingen geprobeerd waaronder deze:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
var opts=f.getElementsByTagName('select'); 
    var i=opts.length,x=[]; 
    while(i--) if(opts[i].value) { 
        x.push(opts[i]); 
    } 
    if(x.length>3||x.length==0) 
    { 
        alert('Maximaal 3 en minimaal 1!'); 
        return false; 
    } 
    return true;

maar deze geeft altijd de alert..iemand een idee?

Verwijderd

Even offtopic, alhoewel....

De algemene perceptie van select boxes is: ik mag er zoveel klikken als ik wil, dus 0 of meer. Wanneer je dus 1,2 of 3 wil, zou ik dit toch iets anders doen! Elke select een functie aanroepen die een interne counter bijhoudt bijvoorbeeld, zodra de 3 bereikt is, worden alle lege selectboxes onbruikbaar! Dit zorgt er dus ook voor dat je niet hoeft te checken of er bij submitten inderdaad aan die voorwaarde wordt voldaan. Ik neem aan dat je achteraf het ook server-side nogmaals controleerd!

Verwijderd

Topicstarter
ja er wordt zeker serverside gechecked, maar voor het gebruikersgemak ook met js..

hmm..ik heb het over select fields (dropdownmenu)..en niet over checkboxen..of begrijpen we elkaar nu niet :)

maar hoe zou jij het doen dan?

  • mjax
  • Registratie: September 2000
  • Laatst online: 18:58
Volgens mij moet je niet opts[i].value maar opts[i].selected controleren in je if statement.

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10 13:03
mjax schreef op maandag 20 november 2006 @ 19:10:
Volgens mij moet je niet opts[i].value maar opts[i].selected controleren in je if statement.
Idd

  • André
  • Registratie: Maart 2002
  • Laatst online: 14:48

André

Analytics dude

Ps. Ik heb even code blokken en een beter titel toegepast ;)

Verwijderd

Topicstarter
ja dat dacht ik ook, maar dan blijft ie die alert geven..ik heb wel al zon vermoeden hoe het komt..

kijk die code heb ik niet zelf geschreven, maar nu kijkt ie hoeveel er in de x array zit..en dat is volgens mij in de huidige code altijd meer dan drie (die x bewaart namelijk selctifields volgens mij)

weet iemand hoe het anders moet?

  • Crayne
  • Registratie: Januari 2002
  • Laatst online: 17-03 13:41

Crayne

Have face, will travel

Je mist een loop om door al je selects heen te lopen. Dit zou moeten doen wat je wilt...

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
for (x = 0; x < selectArray.length; x++) {
        
    var countSelected = 0;
        
    var optionsArray = selectArray[x].options;

    for (i = 0; i < optionsArray.length; i++) {  

        if (optionsArray[i].selected == true) {
                    
            countSelected++;
                    
        }
                
    }
            
    if (countSelected == 0 || countSelected > 3) {  

        alert("Maximaal 3 en minimaal 1!"); 
        return false;

    }
            
}

Mijn Library Thing catalogus

Pagina: 1