webForumDet fria alternativet

SELECT BOX

9 svar · 452 visningar · startad av martinpartin

martinpartinMedlem sedan jan. 2001373 inlägg
#1

Hej,

Jag generer värdena i 2 st selectboxar dynamiskt.

Om jag har 3 st optioner t.ex. i den första, så vill jag att innehållet ändras i den andra beroende på vad jag väljer i den första. Och allt detta ska ske direkt i samma fil. Inga postningar till andra filer. Alla värden får gärna genereras.. men dom får inte vara synliga !

nån som har en idé ?

Mvh
martin

Jesper TMedlem sedan nov. 20017 144 inlägg
martinpartinMedlem sedan jan. 2001373 inlägg
#3

Klockrent ! ;)

martinpartinMedlem sedan jan. 2001373 inlägg
#4

Har fått denna att fungera tillsammans med mitt ASP-script nu. Så att menyera visar rätt osv.

När jag ska posta denna nu så vill jag att den skickar med ID på "staden" i detta fall. inte meny id. Vilken del i java scriptet är

<option value="">

?

J.N.Medlem sedan apr. 20031 660 inlägg
#5

HEJ!

Det svarar du nästan på själv, du frågar vad som är value och det finns endast på två ställen.

selectObj[n].value=kommun[subCat][n];

ändra den till

selectObj[n].value=kommun[n];

I funktionen är första parametern som skickas in den position som kommunen har, subCat som avgör vilken 'huvudarray' 1-21 som städerna ska hämtas från. Och det görs med en enkel loop, där n är räknare.

martinpartinMedlem sedan jan. 2001373 inlägg
#6

Hej!, Nja det fungerade sådär... Eftersom jag lopar igenom alla alternativen med hjälp av en loop i ASP. Jag vill ha med databas ID.

För att få ut kommunerna ser det ut såhär t.ex:

kommun[<% =i_count_fees %>][<% =i_count_stores %>]="<% =RS02("StoreName") %>";

Och i denna kan jag inte byta ut någonting då blir allt fel.

Går detta att lägga till en extra "kollumn" i ovanstående som inte har någon funktion för scriptet som abra innehåller id ?
Om du förstår vad jag menar ?

Mvh
:)

Jesper TMedlem sedan nov. 20017 144 inlägg
#7

Du skulle kunna skicka in id:t efter ett | och sedan splitta det på detta vis:

<script language="JavaScript" type="text/javascript">
var kommun = new Array(3);
for(var n=0;n<kommun.length;n++){
	kommun[n] = new Array();
}
// Samtliga kommuner
kommun[0][0]="-- Välj län --";
kommun[1][0]="Karlshamn[b]|1[/b]"; //Text|id
kommun[1][1]="Karlskrona|22";
kommun[1][2]="Olofström|23";
kommun[1][3]="Ronneby|44";
kommun[1][4]="Sölvesborg|55";
kommun[2][0]="Avesta|60";
kommun[2][1]="Borlänge|70";
kommun[2][2]="Falun|89";
kommun[2][3]="Gagnef|98";
kommun[2][4]="Hedemora|100";
kommun[2][5]="Leksand|110";
kommun[2][6]="Ludvika|120";
kommun[2][7]="Malung|13";
kommun[2][8]="Mora|14";
kommun[2][9]="Orsa|15";
kommun[2][10]="Rättvik|16";
kommun[2][11]="Smedjebacken|17";
kommun[2][12]="Säter|18";
kommun[2][13]="Vansbro|19";
kommun[2][14]="Älvdalen|20";

// osv.
//.split("|")[1];
function showSubKommun(subCat,selectObj){
	selectObj.length=kommun[subCat].length;
	for(var n=0;n<kommun[subCat].length;n++){
		selectObj[n].text=kommun[subCat][n][b].split("|")[0][/b];
		selectObj[n].value=kommun[subCat][n][b].split("|")[1][/b];
	}
}
</script>

<form>
<select name="lan" onChange="showSubKommun(this.selectedIndex,this.form.underKommun);">
    <option value="" selected>-- Välj Län --</option>
    <option>Blekinge län</option>
    <option>Dalarnas län</option>
  </select>
<select name="underKommun" onChange="alert(this[selectedIndex].text+' : '+this[selectedIndex].value);">
    <option selected>-- V&auml;lj l&auml;n --</option>
  </select>
</form>
martinpartinMedlem sedan jan. 2001373 inlägg
#8

Konstruktivt ! och fungerande !

Tackar så mycket för hjälpen ;)

J.N.Medlem sedan apr. 20031 660 inlägg
#9

HEJ!

Ja, tar jag bort ...[3]... någonstans blir den undefined i stadslistan. Och tar jag bort placering blir alla undefined...

Fann först en lösning, men kom på att det var fel, när jag testade den en gång till... :stud

Har nu forskat fram en lösning som fungerar, och postar den även om Jesper T har kommit med en bra lösning under tiden. (Ser nu att du gillade den också.)

function showSubKommun(subCat,selectObj){
	selectObj.length=kommun[subCat].length;
	var a = 0;
	var b = 0;
	for(var n=0;n<kommun.length;n++){
		b++
		if (kommun[subCat][n] != undefined){
			selectObj[a].text=kommun[subCat][n];
			selectObj[a].value=n;
			a++;
		}
	}
	selectObj.length = b - (b - a);
}

kommun[<% =i_count_fees %>][<% =RS("ditt värde")%>]="<% =RS02("StoreName") %>";

Först stoppar jag in värdena i dd, men endast de som är fulla, och endast på option 0,1,2 osv. Sedan raderar jag alla de option som är tomma genom att förkorta dd-listan. De tomma ligger sist, eftersom det fylls ända upp till selectObj.length som är lika med sista värdet på ditt RS. Se hur det fungerar genom att kommentera bort den raden.

Vet ej om det är rätt arbetssätt, men har för mig jag har läst att man kan (=får) ändra length på en dd 'under drift'.

Tips:
När jag behövde göra beroende dd-listor utgick jag från http://www.learnasp.com/learn/listdynamicmore.asp.
Här finns sidor från grunden med en dd, lite tips om hur man arbetar med dd, radera/fyller etc och avslutar med tre listor.

Edit:
Märker nu att detta inte fungerar, dels måste värdena komma i stigande ordning (inte troligt de gör det), dels blir listan för kort om värdena överstiger 22 (array-dim), då måste arrayen göras större. (Förstår inte detta, det finns ju högre värde på exemplet???)
Se min utläggning som en utläggning. Ni kan titta på mitt länktips i alla fall. :h

martinpartinMedlem sedan jan. 2001373 inlägg
#10

Tack för info!, ang arrayen så ändras den genom o räkna hur många poster det finns. Men jag postade koden jag använder + asp. Fungerande men långt från optimerad och färdig.

<% @Language = VBScript %>
<% Option Explicit %>
<% Response.ExpiresAbsolute = Now() - 1 %>

<!-- #include file="inc/settings.asp" -->

<HTML>
<HEAD>
<TITLE>Concept mandatory exemption handling</TITLE>
<link rel="stylesheet" type="text/css" href="style/style.css">
</HEAD>

<BODY>
<font class="textheader">Edit/Delete existing store</font><br><BR>

<%
Dim mdbfile, Connect

Set Connect = Server.CreateObject( "Adodb.Connection" )
    Connect.Provider = "Microsoft.Jet.OLEDB.4.0"
    Connect.ConnectionString = "Data Source='" & dbpath & "'"
    Connect.Open

Dim i_count_arr
Dim SQL03, RS03
    SQL03 = "SELECT * FROM 1FranchiseeInfo ORDER BY FseeCompName"
Set RS03 = Connect.Execute(SQL03)  
Do Until RS03.EOF

i_count_arr = i_count_arr + 1
RS03.MoveNext
Loop
RS03.Close
i_count_arr = i_count_arr + 1
Dim i_count_fees

%>

<script language="JavaScript" type="text/javascript">

var kommun = new Array(<% =i_count_arr %>);
for(var n=0;n<kommun.length;n++){
	kommun[n] = new Array();
}
kommun[0][0]="Choose Store";
<%
Dim SQL01, RS01
    SQL01 = "SELECT * FROM 1FranchiseeInfo ORDER BY FseeCompName"
Set RS01 = Connect.Execute(SQL01)  
Do Until RS01.EOF

i_count_fees = i_count_fees + 1
Dim i_count_stores
i_count_stores = "-1"

'*************************************************
Dim SQL02, RS02
    SQL02 = "SELECT * FROM 10StoreInfo WHERE BelToFseeCompName = "& RS01("ID") &" ORDER BY StoreName"
Set RS02 = Connect.Execute(SQL02)  
Do Until RS02.EOF

i_count_stores = i_count_stores + 1
%>
kommun[<% =i_count_fees %>][<% =i_count_stores %>]="<% =RS02("StoreName") %>|<% =RS02("id") %>";
<%
RS02.MoveNext
Loop

RS02.Close

i_count_stores = "-1"

RS01.MoveNext
Loop

RS01.Close
%>
function showSubKommun(subCat,selectObj){
	selectObj.length=kommun[subCat].length;
	for(var n=0;n<kommun[subCat].length;n++){
		selectObj[n].text=kommun[subCat][n].split("|")[0];
		selectObj[n].value=kommun[subCat][n].split("|")[1];

	}
}
</script>
<form method=post action="edit_store_2.asp">
<select name="lan" onChange="showSubKommun(this.selectedIndex,this.form.underKommun);" class="textbasic">
    <option value="" selected>Choose Franchisee</option>
<%
Dim SQL04, RS04
    SQL04 = "SELECT * FROM 1FranchiseeInfo ORDER BY FseeCompName"
Set RS04 = Connect.Execute(SQL04)  
Do Until RS04.EOF
%>
<option><% =RS04("FseeCompName") %></option>
<%
RS04.MoveNext
Loop
RS04.Close
%>

  </select>
<select name="underKommun" class="textbasic">
    <option value="null" selected>Choose store</option>
  </select><BR><BR>

<script>
function subm_edit(){
document.forms[0].action='edit_store_2.asp';  
document.forms[0].submit();
} 
function subm_delete(){
document.forms[0].action='del_store_1.asp';  
document.forms[0].submit();
} 
</script>

<input type="button" value="Edit" class="textbasic" onclick="subm_edit()" > 
<input type="button" value="Delete" class="textbasic" onclick="subm_delete()">

</form>

</BODY>
</HTML>

<%
Connect.Close
%>
139 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)