Avatar billede mbiegel Nybegynder
27. november 2010 - 23:32 Der er 8 kommentarer og
1 løsning

Vælge flere selectbox

Jeg søger et script så man fra en selectbox kan bestemme eks. 5 selectboxe.

Eksempel:
Hurtig farvevælger: Rød - Blå - Gul

Bil1 - Farve: Rød - Blå - Gul
Bil2 - Farve: Rød - Blå - Gul
Bil3 - Farve: Rød - Blå - Gul
Bil4 - Farve: Rød - Blå - Gul
Bil5 - Farve: Rød - Blå - Gul

Når man vælger rød ved hurtig farvevælger skal alle bilerne skiftes til rød. Men man kan eksempelvis vælge at bil4 er gul bagefter. Så 4 biler er røde og en 1 er gul.

Ved i hvor jeg kan finde sådan et script?
Avatar billede majbom Novice
28. november 2010 - 09:08 #1
altså så når du i den første select vælger "Rød" bliver de andre også sat til "Rød"? og så vil du kunne ændre de andre bagefter uden det har indflydelse på resten?
Avatar billede majbom Novice
28. november 2010 - 09:34 #2
http://majbom.com/testarea/exp/925158/ ?

det kræver at selectboksenes options er ens i alle 5
Avatar billede a2p-dk Nybegynder
28. november 2010 - 09:42 #3
Jeg har lavet en lille javascript der gør det:
Koden fungerer såledet af du kan tilføje så mange selectbokse du vil bare de har navnet "select_childs" og så mange "biler" du vil bare de har navnet "select_cars" se på "data-img"-attributtet det svarer til id'en på hver enkel bil. Samtidig behøver ikke alle bilerne at kunne blive samme farver hvis f.eks at dine standard farver er rød, blå og gul. men at specielt for bil nr 3 skal den også kunne være grøn så er det også en mulighed. Bare at de farver "hurtig vælgeren" kan vælge imellem eksisterer hos alle de andre select-bokse.

Kode:

<script type="text/javascript">
onload=function(){
    createSelect();
}
function createSelect() {
    m = document.getElementsByName("select_master")[0];
    c = document.getElementsByName("select_childs");

    m.onchange=function(e){
        changeSelect( this.options[this.selectedIndex].value , this.getAttribute("data-img") );
    }
    for (var i = 0; i < c.length; i++ ) {
        c[i].onchange=function(){
            changeSelect( this.options[this.selectedIndex].value , this.getAttribute("data-img") );
        }
        setSelectionByValue( c[i] , document.getElementById( c[i].getAttribute("data-img") ).getAttribute("src") );
    }
}
function changeSelect( v , p ) {
    cars = document.getElementsByName("select_cars");
    childs = document.getElementsByName("select_childs");
    if( p == "all" ) {
        for ( var i = 0; i < cars.length; i++ ) cars[i].setAttribute( "src" , v );
        for ( var i = 0; i < childs.length; i++ ) {
            setSelectionByValue(childs[i] , v);
        }
    } else {
        if ( document.getElementById(p) ) document.getElementById(p).setAttribute( "src" , v );
    }
}
function setSelectionByValue( e , v ) {
    for ( var y = 0; y < e.options.length; y++ ) {
        if (e.options[y].value == v) e.selectedIndex = y;
    }
}
function saveSelection() {
    var ret = "";
    cars = document.getElementsByName("select_cars");
    for ( var i = 0; i < cars.length; i++ ) {
        if( i > 0 ) ret += ",";
        ret += cars[i].getAttribute("src");
    }
    alert(ret);
}
</script>

Hurtig vælger

<select name="select_master" data-img="all">
<option value="red.jpg">Rød</option>
<option value="blue.jpg">Blå</option>
<option value="yellow.jpg">Gul</option>
</select>

<br />

<select name="select_childs" data-img="car01">
<option value="red.jpg">Rød</option>
<option value="blue.jpg">Blå</option>
<option value="yellow.jpg">Gul</option>
</select>

<select name="select_childs" data-img="car02">
<option value="red.jpg">Rød</option>
<option value="blue.jpg">Blå</option>
<option value="yellow.jpg">Gul</option>
</select>

<select name="select_childs" data-img="car03">
<option value="red.jpg">Rød</option>
<option value="blue.jpg">Blå</option>
<option value="yellow.jpg">Gul</option>
</select>
<br />
<br />
<img src="red.jpg" name="select_cars" id="car01" />
<img src="blue.jpg" name="select_cars" id="car02" />
<img src="yellow.jpg" name="select_cars" id="car03" />
<button type="submit" onclick="saveSelection();">Gem</button>
Avatar billede a2p-dk Nybegynder
28. november 2010 - 09:43 #4
hah .. godt med en morgen stener....
Avatar billede mbiegel Nybegynder
28. november 2010 - 17:48 #5
Tak for svarene.

splazz'es løsning er den jeg efterspørger. Da jeg har brug for at hente hver enkelt select box information i php, det er ikke så nemt med din løsning a2p-dk, da name bliver det samme på alle selectboxes.


Nu har jeg et tillægsspørgsmål til splazz'es script. Er der muligt at gøre sådan man har 5 kategorier, men hurtigvælgeren skal fungere under hver enkelt kategori. eks hvis der var 5 mærker. Så skal man kunne vælge at eks. alle volvo bilerne var røde og bmw bilerne var blå.

Bil1 Kat: Volvo - Farve: Rød - Blå - Gul
Bil2 Kat: Volvo - Farve: Rød - Blå - Gul
Bil3 Kat: Volvo - Farve: Rød - Blå - Gul
Bil4 Kat: Volvo - Farve: Rød - Blå - Gul
Bil5 Kat: Volvo - Farve: Rød - Blå - Gul

Bil6 Kat: BMW - Farve: Rød - Blå - Gul
Bil7 Kat: BMW - Farve: Rød - Blå - Gul
Bil8 Kat: BMW - Farve: Rød - Blå - Gul
Bil9 Kat: BMW - Farve: Rød - Blå - Gul

Jeg får mange kategorier, nogle kan der være 2 biler i mens andre kan der være 20. Er det muligt på en eller anden måde at kalde et felt for et kategori også uden at name bliver ændre, så name hele tiden er bil5?

onchange="changeSelects(this)"

Så når man skriver det skriver man eks. kategorien i en parantes og den finder selv ud af hvilke felter der er koblet sammen med kategorien, eks:

onchange="changeSelects(this, BMW)"
Avatar billede majbom Novice
28. november 2010 - 20:07 #6
Avatar billede mbiegel Nybegynder
29. november 2010 - 19:39 #7
Mange tak!


Smid et svar og så skal du med glæde få point :)

a2p-dk tak for hjælpen selvom jeg ikke fik brug for dit script :)
Avatar billede majbom Novice
29. november 2010 - 19:52 #8
selv tak :)
Avatar billede majbom Novice
30. november 2010 - 01:28 #9
tfp :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester