Just nu i M3-nätverket
Gå till innehåll

Hämta värde från Select-tag utan att ladda om sidan


julian1

Rekommendera Poster

Hej.

 

 

Jag har en Select tag som visar storlek och en som visar färg i en webshop. Jag fyller <option> med värden från en databas. För att querystrings och databas ska fungera smidigast hämtar jag siffervärden, tex

<select name="farg">

<option value="1">Blå</option>

 

jag laddar färg, storlek och antal till en array i kundvagnen. problemet är att jag vill få med mig även namnet, t ex "Blå" för att skriva ut i kundvagnen, inte bara dess värde, "1".

 

Jag vill inte att sidan ska laddas om med något onChange-javascript, och heller inte starta ett recordset i kundvagnen för att ta reda på färgnamn, vilket tar onödig bandvidd.

 

Finns det alltså antingen något sätt att känna av vilket värde som är valt i en select-tag utan att ladda om sidan eller köra formuläret?

 

Eller att kunna befolka select-taggen med flera värden på respektive rad?

 

typ.. <option value="1" value2="Blå">Blå</option>

 

Hoppas jag förklarat mig någorlunda tydligt. Tack på förhand,

 

Jesper

 

 

Länk till kommentar
Dela på andra webbplatser

<[color="#0000ff"]Select[/color] id=[GRÅ]"farg"[/GRÅ] name=[GRÅ]"farg"[/GRÅ]>

 

Vald färgtext fås med

 

var o=document.getElementById([GRÅ]"farg"[/GRÅ]);
var sOptText=o.options[o.selectedIndex].text;

 

Länk till kommentar
Dela på andra webbplatser

Hej.

 

Tack för det snabba svaret!

 

Jag är usel på javascript så finns det någon möjlighet att du förklarar lite tydligare hur jag ska använda din kod?

 

Vad jag förstår ska jag ange ett id för select också, men hur får jag tag på det med request.form från kundvagnssidan, och vart lägger jag din kod på produktsidan.

 

tack på förhand igen,

 

mvh jesper

 

 

Länk till kommentar
Dela på andra webbplatser

men hur får jag tag på det med request.form från kundvagnssidan,

 

Ok, jag trodde du ville ha det på samma sida som formuläret. Isåfall blir det lite krångligare. Det finns två sätt att göra det på och det enklaste, som inte kräver ngn Javascript är följande.

 

1) [FORMULÄRSIDAN]

Istället för att bara ha färgid i value lägger du dessutom in färgnamnet

<option value=[GRÅ]"1|Blå"[/GRÅ]>Blå

 

2) [sIDAN DU POSTAR TILL]

När du hämtar värdet med Request.Form krävs att du splittar upp det för att få tag på båda parametrarna

sColor=[b]Request[/b].Form([GRÅ]"farg"[/GRÅ])
arrColor=[color="#0000ff"]Split[/color](sColor,[GRÅ]"|"[/GRÅ])
nColorId=[color="#0000ff"]Cint[/color](arrColor(0))  [color="#006400"]' ger värdet 1[/color]
sColorName=arrColor(1)  [color="#006400"]' ger värdet 'Blå'[/color]

 

EDIT: Det andra sättet hade varit att använda sig av ett hidden-fält på formulärsidan, som med javascript fylls med metoden från mitt första inlägg. Men kör på det jag sagt här istället.

 

 

[inlägget ändrat 2004-12-20 05:54:05 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

hej igen,

 

Tack för svaret. Jo, jag var inne ett tag på att göra en array, sedan letade jag mig trött efter ngn form av javascript som kunde ge mig värdet på produktsidan. Hidden form field var då min tanke.

 

Eftersom jag inte är bäst på arrays heller så var ditt svar dock bra, som på ett enkelt sätt förklarade hur jag skulle använda den varianten.

(vad är avdelaren för ngt, ett stort i?. kan väl iofs ha komma, eller semikolon..eller nåt annat.)

 

Om du orkar får du dock gärna förklara hur javascriptvarianten skulle anropas/användas, den verkar bra att kunna för framtiden. :)

 

Så här ser kodsnutten ut nu:

 

[b]Response[/b].Write [GRÅ]"&nbsp;<select name='Farg' [color="#ff0000"]id=FargNamn?[/color]>"[/GRÅ]
[color="#0000ff"]Do[/color] Until rsColor.EOF

[color="#0000ff"]If[/color] [color="#0000ff"]Not[/color] Farg = [GRÅ]""[/GRÅ] [color="#0000ff"]Then[/color] 
[color="#0000ff"]If[/color] rsColor([GRÅ]"colorID"[/GRÅ]) = [color="#0000ff"]CLng[/color](Farg) [color="#0000ff"]Then[/color]
Status = [GRÅ]" selected"[/GRÅ]
[color="#0000ff"]Else[/color]
Status = [GRÅ]""[/GRÅ]
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

[b]Response[/b].Write [GRÅ]"<option value='"[/GRÅ] & rsColor([GRÅ]"colorID"[/GRÅ]) & [GRÅ]"'"[/GRÅ] & Status & [GRÅ]">"[/GRÅ]  & rsColor([GRÅ]"color"[/GRÅ]) & [GRÅ]"</option>"[/GRÅ] & vbCrLf
rsColor.MoveNext
[color="#0000ff"]Loop[/color]

[b]Response[/b].Write [GRÅ]"</select>"[/GRÅ] 

 

 

Tack för att du tar dig tid att svara, särskilt mitt i natten :)

 

mvh jesper

 

Länk till kommentar
Dela på andra webbplatser

(vad är avdelaren för ngt, ett stort i?. kan väl iofs ha komma, eller semikolon..eller nåt annat.)

Det är PIPE-tecknet (samma tangent som < och >). Jag brukar ha för vana att använda den som avdelare då det sällan är ett tecken som används i vanlig skrift.

 

Javascriptvarianten skulle alltså gå ut på att du dels har din SELECT, farg, som enbart returnerar färgID och dels en HIDDEN som returnerar färgnamnet.

 

<input type=[GRÅ]"hidden"[/GRÅ] id=[GRÅ]"fargnamn"[/GRÅ] name=[GRÅ]"fargnamn"[/GRÅ] value=[GRÅ]""[/GRÅ]>
<[color="#0000ff"]Select[/color] id=[GRÅ]"farg"[/GRÅ] name=[GRÅ]"farg"[/GRÅ] onchange=[GRÅ]"document.getElementById('fargnamn').value=this.options[this.selectedIndex].text;"[/GRÅ]>
<option value=[GRÅ]"1"[/GRÅ]>Blå
</[color="#0000ff"]Select[/color]>

======================

 

Tack för att du tar dig tid att svara, särskilt mitt i natten :)

Inga problem, sitter och jobbar själv. Hade en deadline som måste bli klar till morgonen.

 

 

[inlägget ändrat 2004-12-20 06:17:01 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Tack för det. Då har jag två varianter att testa :)

 

Just nu har jag recordset-varianten i kundvagnen som hämtar färgnamn, men ska pröva dina förslag i morgon. Jag har ju också deadline och borde göra mer akuta saker... :)

 

Hoppas du blev klar med din. Tack igen!

 

Mvh jesper

 

 

Länk till kommentar
Dela på andra webbplatser

Hej igen.

 

Tänkte se om jag kunde få ytterligare råd, då det inte fungerar.

 

Jag får ett

Microsoft VBScript runtime (0x800A0009)
Subscript out of range: [color="#006400"]'[number: 0]'[/color]

.

..när jag försöker tömma kundvagnen (dvs sätta antal = 0). I kundvagnen finns en annan array från 0 till 15. Det verkar som att det blir ngn konflikt med den nya arrayen jag fick tips utav dig med?

För på raden som felet hänvisas till, är där jag sätter :

Farg=[color="#0000ff"]Cint[/color](arrColor(0)) [color="#006400"]' ger värdet 1	[/color]

 

I och med att produktsidan kommunicerar med kundvagnen hela tiden (titta gärna på www.lifan.se om du vill) så har jag också försökt tömma "Färg-arrayen" genom "erase arr" eller arr = Empty" så att den inte ska fyllas på hela tiden.

 

Då jag inte kan arrays speciellt bra så är jag rätt lost...

 

tack på förhand igen... .=

 

jesper

 

 

[inlägget ändrat 2004-12-22 03:45:56 av julian]

Länk till kommentar
Dela på andra webbplatser

Jag gissar att felet uppstår när du från kundvagnen postar till sig själv. Det beror isåfall på att du i kundvagnen inte har några fält från produktsidan som postas vidare och då blir ju Request.Form("Farg") en tom sträng.

 

Eftersom det händer när du tömmer vagnen så behövs väl inte denna data, så sätt en If-sats runt stället:

 

[color="#0000ff"]If[/color] sColor<>[GRÅ]""[/GRÅ] [color="#0000ff"]Then[/color]
 arrColor=[color="#0000ff"]Split[/color](sColor,[GRÅ]"|"[/GRÅ])
 nColorId=[color="#0000ff"]Cint[/color](arrColor(0)) 
 sColorName=arrColor(1) 
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

 

Länk till kommentar
Dela på andra webbplatser

Hej. Tyckte väl jag såg dig som inloggad nyss.. Fler deadlines? ;)

 

Tack för svaret. Nu slipper jag det problemet, dock går inte kundvagnen att tömma längre.Det händer inget utan sidan laddas bara om. Ändrade till som du skrev:

		sColor=[b]Request[/b].Form([GRÅ]"farg"[/GRÅ])
	[color="#0000ff"]If[/color] sColor <> [GRÅ]""[/GRÅ] [color="#0000ff"]Then[/color]
	arrColor=[color="#0000ff"]Split[/color](sColor,[GRÅ]"|"[/GRÅ])
	Farg=[color="#0000ff"]Cint[/color](arrColor(0)) [color="#006400"]' ger värdet 1[/color]
	FargNamn=arrColor(1) [color="#006400"]' ger värdet 'Blå'[/color]
	ProductNr=[color="#0000ff"]Cint[/color](arrColor(2)) [color="#006400"]' Ger produktID för respektive färg för lagerhantering[/color]
	[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

 

Javscript-varianten du tipsade om har jag inte provat ännu, men en fråga: Innebär inte onchange att sidan måste laddas om för att Färgnamnet ska skickas till det dolda fältet?

 

Jag kanske inte kommer ifrån det.. Det har nämligen uppstått ett nytt problem (när jag nästan trodde jag var klar..). Jag räknar lagerstatus på produkterna också och vete sjutton om det går att hämta produktID för detta, när det by default blir den första produkten som visas på produktsidan och ett antal färgval (som hämtas från separat tabell)..?

För reservdelar är det enklare då ifall det finns fyra färger så ligger det fyra poster direkt på sidan, men för produkter bara en..

 

Vet inte om du förstår vad jag menar. Ledsen om det blev lite långrandigt.

Tack igen för att du har tålamod.

 

Mvh jesper

 

Länk till kommentar
Dela på andra webbplatser

Innebär inte onchange att sidan måste laddas om för att Färgnamnet ska skickas till det dolda fältet?

 

Nädå, onchange innebär att hiddenfältet uppdateras varje gång man väljer en ny färg (utan att sidan laddas om)

 

I övrigt är jag nog inte helt med på hur din kundvagn är uppbyggd.

 

Fler deadlines?

Nä, det är filmtajm =) Sitter och betar av mitt enorma filmbibliotek nu när man äntligen har lite tid för r&r.

 

Länk till kommentar
Dela på andra webbplatser

Du är ju löjligt snabb på att svara. Jag är imponerad :)

 

Film låter bra, bra mkt bättre än mina tröstlösa försök att lösa detta.

 

Jag förklarar gärna hur det är byggt så får vi se om du orkar ta dig igenom, det skulle onekligen vara skönt att få vila lite innan jul, hehe..

 

Om du kollar på sidan och testlägger något i kundvagnen så märker du att kundvagnen anropas, lägger produkten och all info i en array och går tillbaks till produktsidan o skriver att produkten lagts till eller uppdaterats.

 

I kundvagnen finns en länk för att tömma kundvagnen som sätter variabeln Tom till True, vilket nollställer arrayen. Till varje produkt finns också en ta bort-länk vilken sätter antal för just den produkten till noll, så att den försvinner. Av någon anledning funkar inte det nu efter tillkomsten av den nya arrayen, även med if-satser.

 

Nä du.. jag känner mig rätt fastlåst. Problemet som uppkommit är också att det på varje produktsida visas en produkt, med ett id, som är en post i databasen. Men finns den i fyra färger finns den mao på fyra poster. Så jag får inte med mig produktens id heller vilket gör det rätt svårt att räkna lagerstatus på modellen... :( Iofs får jag med den genom att lägga till en key i "din" array, men den funkar ju inte riktigt. Sedan finns det förstås produkter som bara har storlek och inte färg och tvärtom så då måste det till ännu en array. Stön.

 

Okej, sorry för att jag "skrev av mig". Tänkte att det skulle ge någon ljus idé men icke. Om du förstår nåt vad jag menar så skriv gänra tillbaks.

 

Ha det gott.

Jesper

 

Länk till kommentar
Dela på andra webbplatser

Är kundvagn.asp väldigt lång? Jag tror inte jag kan komma med bättre tips utan hela koden. Jag är vaken en film till (blir nog King Arthur Editors Cut eller Spartacus), sen blir det vila, men maila filen om du vill (får för kund) så ska jag se vad jag kan komma på.

 

 

 

Länk till kommentar
Dela på andra webbplatser

Hej igen,

 

Chansar och ser om du är här. Filen är bra lång ja... så jag ska inte trötta ut dig.

Jag tror att det smartaste är om jag kan använda ditt javascript-förslag och skicka option-texten till en hidden form, vilket jag iofs inte fått att funka ännu :(

 

Men skulle man också kunna hämta värdet på färg (färgid) när någon väljer det så att jag kan använda det i ett recordset på samma sida, och genom att stämma av vilken färg (färgid) de valt så kan jag få fram även id för produkten - innan formuläret skickas till kundvagnen.

 

Nu har jag provat alla varianter, så jag hoppas att detta låter sig göras på något sätt...

 

Här är ett kort exempel:

 

<input type=[GRÅ]"text"[/GRÅ] id=[GRÅ]"farg"[/GRÅ] name=[GRÅ]"farg"[/GRÅ] value=[GRÅ]""[/GRÅ]>
<input type=[GRÅ]"text"[/GRÅ] id=[GRÅ]"fargnamn"[/GRÅ] name=[GRÅ]"fargnamn"[/GRÅ] value=[GRÅ]""[/GRÅ]>

<Select id=[GRÅ]"farg"[/GRÅ] name=[GRÅ]"farg"[/GRÅ] onchange="document.getElementById('fargnamn').value=this.options[this
.selectedIndex].text;">
<option value=[GRÅ]"1"[/GRÅ]>Blå</option>
<option value=[GRÅ]"2"[/GRÅ]>Grön</option>
<option value=[GRÅ]"3"[/GRÅ]>Röd</option>
<option value=[GRÅ]"4"[/GRÅ]>Vit</option>
</[color="#0000ff"]Select[/color]>

 

Problem 1. Eftersom första färgen på produktsidan väljs automatiskt, behövs det ju någon form av body onload-variant, så att det skrivs ett värde ifall kunden väljer den första produkten...

 

problem2. Hur kan jag göra för att lägga till i onchange-argumentet för att även hämta value utan att ladda sidan. Och i steg två kunna hämta ut detta till mitt recordset?

 

tydlig eller otydlig? ;)

 

 

hoppas filmerna var bra :)

 

jesper

 

 

[inlägget ändrat 2004-12-22 22:15:26 av julian]

Länk till kommentar
Dela på andra webbplatser

Men skulle man också kunna hämta värdet på färg (färgid) när någon väljer det så att jag kan använda det i ett recordset på samma sida, och genom att stämma av vilken färg (färgid) de valt så kan jag få fram även id för produkten - innan formuläret skickas till kundvagnen.

 

Fast recordsetet kan du ju inte få fram på klientsidan, eller missförstod jag?

 

Jag vet inte hur din databas är uppbyggd, men hur skulle du kunna få ut produktid givet ett färgid? Eller har du en post i färgdatabasen för varje gång den förekommer i en produkt, dvs varje färgid hör till en unik produkt?

 

En variant skulle vara att ha ett hiddenfält som innehåller ALL data för vald produkt, ex. FärgId|ProdId|FärgNamn|ProdNamn osv. Sen behöver du i kundvagnen bara hämta upp detta fält, splitta upp det och använda värdena. För de produkter där vissa parametrar inte används så lämnar du bara tomt på den positionen

 

Ex. ("|10||Yamaha") - Ingen färginfo använd

Ex. ("3|10|Blå|Yamaha") - Färginfo använd

 

När du sedan splittar upp strängen och plockar ut de olika parametrarna, och en viss parameter är tom så vet du att den inte används.

 

Länk till kommentar
Dela på andra webbplatser

Som sagt... du är löjligt snabb... :)

 

 

Min databas är alltså uppbyggd så att en produkt som varken har attributen storlek eller färg förekommer i en post, medan t ex en jacka som finns i tre storlekar och tre färger finns mao på nio platser. färger och storlekar ligger i separata tabeller som jag hämtar in.

detta för att kunna räkna lagerstatus på respektive produkt i olika storlekar och färger. vet inte om det var smart, men det verkade som bästa lösningen när jag började.

 

att göra en array på allt är jag inte så sugen på eftersom det mesta är klart i kundvagn o på produktsida. det var först nu när jag skulle göra ordermejl och lageravräkning som jag insåg att den räknade av lagerstatus för den första produkten som visas på produktsidan.

säg t ex att en produkt har id 25 i produkttabellen. sedan listar jag färgid och storleksid utifrån produktens artikelnummer, inte id, för att kunna visa alla färger o storlekar. så säg att id25 t ex är blå och "XL".

men när kunden väljer färgen grön och storlek XS och lägger i kundvagnen så är endast färgid och storlekid rätt, medan produktid fortsätter vara 25. även fast färgen och storleken som kunden valt egentligen motsvarar t ex produktid 28.

förstår du hur jag menar?

Om jag bara kunde få med mig produktid till kundvagnen och inte lägga nya arrays, så skulle allt vara löst.

 

Om jag med javascript kunde få ut värdet på färgen, tex "2" för att använda i en asp-slinga skulle jag kunna öppna ett recordset och utifrån artnr och färgid plocka fram det egentliga produktid:et och lägga detta till min kundvagnsarray, för att kunna räkna av lagerstatus.

 

vet inte om jag gör mig så bra förstådd. eller om jag tänker rätt hehe...

 

du är en klippa.. thanks.

 

 

Länk till kommentar
Dela på andra webbplatser

Ok, då tror jag att jag förstår, jag tror jag har en bra lösning på det, återkommer om en stund med lite kod.

 

En sak slog mig samtidigt, säg att du har två produkter kvar av en viss typ och de som finns är:

 

XS Blå

XL Röd

 

Detta innebär ju att dessa värden finns i de två rullgardinerna. Hur har du löst det om de väljer en kombination som inte finns i lager, ex. XS Röd?

 

Länk till kommentar
Dela på andra webbplatser

Här kommer mitt kodförslag. Det går ut på att du med ASP skapar följande Javascript-array:

var arrIds=[color="#0000ff"]New[/color] [color="#0000ff"]Array[/color](25,1,1,38,2,2);

där värdena är angivna som grupper om 3 - ProdId, FärgId, StorleksId.

 

När användaren väljer en färg eller storlek söks arrayen igenom efter produkter som har just den kombinationen. Om kombon inte hittas ges produktid=0 annars korrekt id, i hiddenfältet ProdId:

 

<html>
<head>
<title>Untitled</title>
<SCRIPT LANGUAGE=[GRÅ]"JavaScript"[/GRÅ] TYPE=[GRÅ]"text/javascript"[/GRÅ]>
<!--
var arrIds=[color="#0000ff"]New[/color] [color="#0000ff"]Array[/color](25,1,1,38,2,2);
[color="#0000ff"]Function[/color] SetProdId() {
	o1=document.getElementById([GRÅ]"farg"[/GRÅ]);
	o2=document.getElementById([GRÅ]"storlek"[/GRÅ]);	
	nProdId=0;
	nFargId=parseInt(o1.options[o1.selectedIndex].value);
	nStorId=parseInt(o2.options[o2.selectedIndex].value);
	[color="#0000ff"]For[/color] (i=0;i<arrIds.length;i+=3) {
		[color="#0000ff"]If[/color] (nFargId==arrIds[i+1] && nStorId==arrIds[i+2])
			nProdId=arrIds[i];
	}	
	document.getElementById([GRÅ]"ProdId"[/GRÅ]).value=nProdId;
}

//-->
</SCRIPT>

</head>

<body>
<input type=[GRÅ]"hidden"[/GRÅ] id=[GRÅ]"ProdId"[/GRÅ] name=[GRÅ]"ProdId"[/GRÅ] value=[GRÅ]"0"[/GRÅ]>
<[color="#0000ff"]Select[/color] id=[GRÅ]"farg"[/GRÅ] name=[GRÅ]"farg"[/GRÅ] onchange=[GRÅ]"SetProdId();"[/GRÅ]>
<option value=[GRÅ]"1"[/GRÅ]>Blå
<option value=[GRÅ]"2"[/GRÅ]>Röd
</[color="#0000ff"]Select[/color]>
<[color="#0000ff"]Select[/color] id=[GRÅ]"storlek"[/GRÅ] name=[GRÅ]"storlek"[/GRÅ] onchange=[GRÅ]"SetProdId();"[/GRÅ]>
<option value=[GRÅ]"1"[/GRÅ]>XL
<option value=[GRÅ]"2"[/GRÅ]>XS
</[color="#0000ff"]Select[/color]>
</body>
</html>

 

EDIT: Observera att koden har fått lite konstiga radbrytningar härinne, det är viktigt att du tar bort de som brutit sönder kodrader.

[inlägget ändrat 2004-12-22 23:11:30 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

HEj.

 

Tack så mycket för förslaget. Uppskattar verkligen att du tar dig tid.

 

I dagsläget visar jag alla produkter, även om lagerantal är noll. Men senare kommer jag helt enkelt bara lista de färger och storlekar där antal i lager är större än noll. Så det ska aldrig komma till den försmädliga resultatet för besökaren att "sökningen/valet gav inget resultat".

Har en reservdelsdatabas för återförsäljare, där lagerantal anges direkt på sidan. Men där har jag inga problem, då t ex en blå respektive röd visas som varsin produkt (ID) på sidan. Men det passar sig inte i den här designen, därav mina problem.

 

Om jag förstår din kod rätt, vilket är svårt då javascript är grekiska för mig.. :), så skulle jag söka igenom alla produkter och hitta kombinationer? Iofs finns det ju bara en som har t ex prodid 25, färg 1 och strlk 5. men det finns också de som bara har en färg eller bara en storlek, vilket väl ger problem? Och söka igenom alla produkter varje gång, om jag förstår det rätt, borde ju ta onödig processorkraft.

 

I och med att jag med din hjälp kan få ut Färgnamn (liksom StorleksNamn, borde det inte gå att göra något åt det här hållet?

 


[color="#0000ff"]If[/color] storlek = [GRÅ]""[/GRÅ] [color="#0000ff"]Then[/color]

<input type=[GRÅ]"hidden"[/GRÅ] id=[GRÅ]"fargnamn"[/GRÅ] name=[GRÅ]"fargnamn"[/GRÅ] value=[GRÅ]""[/GRÅ]>

<Select id=[GRÅ]"farg"[/GRÅ] name=[GRÅ]"farg"[/GRÅ] onchange="document.getElementById('fargnamn').value=this.options[this
.selectedIndex].text;">
[color="#ff0000"]onchange="document.getElementById('fargID').value=this.options[this
.selectedIndex].value;">[/color]

[MÄRK]<%[/MÄRK] [color="#0000ff"]Do[/color] [color="#0000ff"]While[/color] [color="#0000ff"]Not[/color] rs.eof [MÄRK]%>[/MÄRK]

<option value=[GRÅ]"<%=rs("[/GRÅ]ColorID[GRÅ]")%>"[/GRÅ]>[MÄRK]<%[/MÄRK]=rs([GRÅ]"ColorName"[/GRÅ])[MÄRK]%>[/MÄRK]</option>

[MÄRK]<%[/MÄRK] rs.MoveNext
[color="#0000ff"]Loop[/color] [MÄRK]%>[/MÄRK]
</[color="#0000ff"]Select[/color]>

 

Och få ut just value för att göra ett recordset ungefär som:

 

[GRÅ]"SELECT prodid, prodtabell.färgid from prodtabell, färgtabell där prodtabell.färgid = färgtabell.färgid and artikelnummer = "[/GRÅ] & rs([GRÅ]"artnr"[/GRÅ]) & [GRÅ]" and färgtabell.färgid = "[/GRÅ] & det färgid man får från [color="#0000ff"]Select[/color] när användaren byter? 

 

jadu, jag borde nog lära mig javascript. om man kunde kombinera det bra med asp skulle det nog lösa en del.

 

återigen, ett j-igt långt inlägg....

 

väldigt vänliga hälsningar. jesper

 

[inlägget ändrat 2004-12-23 00:19:40 av julian]

[inlägget ändrat 2004-12-23 00:21:02 av julian]

Länk till kommentar
Dela på andra webbplatser

Suck E-forum laggar hårt nu. Mitt långa inlägg kommer aldrig iväg. Testar med ett kort testinlägg

 

EDIT: Men vafan, det gick minsann att posta. Försöker igen...(vad har hänt med idg:s servrar ikväll egentligen)

[inlägget ändrat 2004-12-23 00:47:48 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

borde ju ta onödig processorkraft.

Det beror på hur många produkter (dvs. hur många kombinationer av samma produkt) det handlar om på varje enskild produktsida. Javascript är snabbt och jag ser inte att det ska leda till märkbart lagg. Men visst kan du göra så att uträkningen av ProduktId görs när man klickar på Submit-knappen istället. Det är nog smartare. Ta bara bort onchange-satserna från SELECT:arna och lägg in följande i Submit-knappen:

onclick=[GRÅ]"SetProdId();"[/GRÅ]

 

 

 

Länk till kommentar
Dela på andra webbplatser

(forts.)

 

I de fall det bara finns en parameter (färg eller storlek) blir det förstås lite knöligt med min lösning. Det går dock att skriva om mitt exempel så att det löses.

 

Säg att färg inte finns valbart:

- Javascript-arrayen som byggs upp får innehålla nollor där färgid skulle stått

- SELECT-taggen för färg läggs in på sidan (men göms med style="display:none;") och ges en option som är förvald, med värdet 0

 

1. Skapa javascriptarrayen:

[log]

	[MÄRK]<%[/MÄRK]
[color="#006400"]' Generera Javascriptarray[/color]
sTmp=[GRÅ]"var arrIds=new Array("[/GRÅ] 
[color="#006400"]' Viktigt att sql-frågan är skriven så att den returnerar noll (0) om en viss parameter inte ingår[/color]
sQuery=[GRÅ]"SELECT ProdId,FargId,StorlekId FROM Tabeller...osv"[/GRÅ]
[color="#0000ff"]Set[/color] rst=conn.[color="#0000ff"]Execute[/color](sQuery)
[color="#0000ff"]Do[/color] [color="#0000ff"]While[/color] [color="#0000ff"]Not[/color] rst.EOF
	sTmp=sTmp & rst([GRÅ]"ProdId"[/GRÅ]) & [GRÅ]","[/GRÅ] & rst([GRÅ]"FargId"[/GRÅ]) & [GRÅ]","[/GRÅ] & rst([GRÅ]"StorlekId"[/GRÅ]) & [GRÅ]","[/GRÅ]
[color="#0000ff"]Loop[/color]
sTmp=[color="#0000ff"]Left[/color](sTmp,[color="#0000ff"]Len[/color](sTmp)-1) & [GRÅ]");"[/GRÅ]
[b]Response[/b].write sTmp
[MÄRK]%>[/MÄRK]

[/log]

Därefter följer Javascriptfunktionen från tidigare

 

Länk till kommentar
Dela på andra webbplatser

(forts.)

 

2. Sätt variabler som säger ifall de olika rullgardinerna ska visas eller ej:

	<%blShowColor=[color="#0000ff"]True[/color]
blShowSize=True%>

 

3. Om en rullgardin skall visas (variablerna från 2.) kör du på som du gjort tidigare och fyller den med värden. Om inte, skriv bara ut (exempel för Farg):

 

<[color="#0000ff"]Select[/color] id=[GRÅ]"farg"[/GRÅ] name=[GRÅ]"farg"[/GRÅ] style=[GRÅ]"display:none;"[/GRÅ]>
<option value=[GRÅ]"0"[/GRÅ] selected>
</[color="#0000ff"]Select[/color]>

========================

På det här viset kommer min funktion fungera för fallen med enbart en rullgardin också.

 

SÅ, JAG FICK DELA UPP INLÄGGET PÅ 3 DELAR AV NGN ANLEDNING.

 

Länk till kommentar
Dela på andra webbplatser

Hej igen.

 

Jag tackar dig så mycket. Det är ovanligt med så hjälpsamma människor.

 

Tyvärr fungerar det inte. Mest beroende på att det var lite för svårt för mig. Jag hajade t ex inte vart jag skulle sätta in ShowColor=true etc, och vad de argumenten kom ifrån.

 

Ska se över mina sidor och se om det finns något enklare sätt som jag förbisett. Det är ju bara ett litet j-a produktID och annars funkar det. Men det är ju en hel dag kvar till jul... :)

 

Ha det gott. Och tack igen.

 

Jesper

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...