webForumDet fria alternativet

onChange, lägga till option

3 svar · 282 visningar · startad av bassebhu

bassebhuMedlem sedan nov. 20016 480 inlägg
#1

Hej alla glada!

Jag har ett script som hämtar fram rätt underkategorier i en select beroende på vad man gör för val i en annan huvudkategori-select. Allt fungerar, men jag skulle vilja lägga till "Alla underkategorier" som en option innan underkategorierna kommer.

Min kod:

var category = [
{parentid: 1, subCatid: 1, subCatName: "Huvudkat 1 - Underkat 1"},
{parentid: 1, subCatid: 2, subCatName: "Huvudkat 1 - Underkat 2"},
{parentid: 2, subCatid: 1, subCatName: "Huvudkat 2 - Underkat 1"},
{parentid: 2, subCatid: 2, subCatName: "Huvudkat 2 - Underkat 2"},
]

function showSubCats(subCat,selectObj) {
    selectObj.length = 0;
    if (subCat == "ALL") selectObj[0] = new Option("Alla underkategorier", "ALL");
    var j = 0,
	elm;
    for (var k = 0; (elm = category[k]); ++k)
	if (elm.parentid == subCat)
		selectObj[j++] = new Option(elm.subCatName, elm.subCatid);
}

[...]

<select name="category" onChange="showSubCats(this.value,this.form.subCategory);">
<option value="ALL" selected>Alla kategorier</option>
<option value="1">Kategori 1</option>
<option value="2">Kategori 2</option>
</select>

<select name="subCategory">
<option value="ALL" selected>Alla underkategorier</option>
</select>

När man väljer kategori 1 så hämtas alltså underkategori 1 och 2 till huvudkategori 1. Jag vill att en tredje underkategori som heter "Alla underkategorier" finns med i en option över underkategorierna.

Hur? :) Tack.

bassebhuMedlem sedan nov. 20016 480 inlägg
#2

och en fråga till. när infördes onChange-funktionen och hur säker är den att använda i formulär på selectboxar?

Peter SMedlem sedan dec. 20025 483 inlägg
#3

Tja!

Är det så här du menar?:

function showSubCats(subCat,selectObj) {
    if (subCat == "ALL"){
	selectObj.length = 0;
	selectObj[0] = new Option("Alla underkategorier", "ALL");
    }

    var j = 1,
	elm;
    for (var k = 0; (elm = category[k]); ++k)
	if (elm.parentid == subCat)
		selectObj[j++] = new Option(elm.subCatName, elm.subCatid);
}

Angående onchange() så är inte det en inbyggd funktion likt, t ex, alert(). onchange**()** är endast definierad då du som programmerare initialiserat denna händelse, genom exempelvis:

onchange="...",
[i]selectRef[/i].onchange = function(){...},
[i]selectRef[/i].onchange = [i]funcRef[/i]

:)

bassebhuMedlem sedan nov. 20016 480 inlägg
#4

jepp, så jag menade :) tack! :)

142 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)