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 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 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.
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 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älj län --</option>
</select>
</form>
Konstruktivt ! och fungerande !
Tackar så mycket för hjälpen ;)
J.N.Medlem sedan apr. 20031 660 inlägg 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
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
%>