06. december 2001 - 14:53Der er
11 kommentarer og 1 løsning
2 dropdown box på samme side
Jeg skal bruge et script som opdater den anden dropdown box når man har valgt noget i den første hvordan får man det til at funger når det meget gerne skal være på en side.
Jeg har fundet et kombineret asp og JavaScript som er gør så den henter den nederste del af siden når du har valg noget i den første men det er ikke særlig optimalt når der skal være en del felter neden under den anden box da koden fylder en del har jeg ikke sat den ind her.
function transferValue( newForm ){ // Finner antall options i selectbox var len = newForm.sel2.length; // Finner index til den valgte option var sel = newForm.sel1.selectedIndex; // Henter option Objektet var optionObjekt = newForm.sel1.options[ sel ];
// Sjekker om det første element er valgt. Hvis det er det, så skal ingen verdi overføres if( sel > 0 ){ // Henter den valgte verdi var verdi = optionObjekt.value; // Overfører verdien newForm.sel2.options[ len ] = new Option( verdi, verdi ); // Sletter verdien fra den opprinnelige selectbox newForm.sel1.options[ newForm.sel1.selectedIndex ] = null;
>>nute det er sådan at den værdi som kommer til at så i box 2 skal hentes fra en database da værdien af hænger af hvad der bliver valg i box 1 værdien i boks 1 skulle også gerne hendes fra en database det kan jeg dog godt selv se hvordan jeg får den til.
du mener med andre ord at hele innholdet av box skal endres alt etter valg i box 1 ?? Fx
hvis \'Madonna\' er valgt i box 1, så skal options i box 2 være \'Like a virgin\', \'Broken\' og \'Guy Richie\', men hvis \'Pink Floyd\' er valgt i box 1 så skal options i box 2 være \'The wall\', \'Animals\' og \'Another brick in the Wall\'.
du er nødt til å legge alle verdiene du ønsker vist i box 2 inn i en JavaScript array istedenfor å legge dem ned i en selectbox. hvis jeg skulle gjort det samme, ville jeg ha gjort noe ála dette:
<html> <head> <script> contentArr = new Array();
function fillList( id ){ // Deleting all options document.frm.targetSel.options.length = 0; tmpArr = contentArr[ id ]; for( i = 0; i < tmpArr.length; i++ ){ document.frm.targetSel.options[ document.frm.targetSel.options.length ] = new Option( tmpArr[ i ], tmpArr[ i ] ); } }
</script> </head> <body> <form name=\"frm\"> <select name=\"box\" onchange=\"fillList( this.selectedIndex );\"> <option value=\"\"></option> <% SQL = \"SELECT * FROM dinTabell\" Set RS = Conn.Execute( SQL ) mainCounter = 0; subCounter = 0; while NOT RS.EOF response.write \"<option value=\"\"\" & RS(\"ID\") & \"\"\">\" & RS(\"ID\") & \"</option>\" subSQL = \"SELECT * FROM dinAndreTabell WHERE ID = \" & RS(\"ID\") Set subRS = Conn.Execute( subSQL ) while NOT subRS.EOF %> <script> subArr = new Array(); subArr[<%= subCounter %>] = \'<%= subRS(\"kolonne\") %>\'; </script> <% subCounter = subCounter + 1 subRS.MoveNext wend subRS.Close Set subRS = nothing %> <script> contentArr[<%= mainCounter %>] = subArr; </script> <% mainCounter = mainCounter + 1; RS.MoveNext wend RS.Close Set RS = nothing %> </select><br> <select name=\"targetSel\"> <option value=\"\"></option> </select> </form> </body> </html>
dette er ikke testet med en fungerende databasse, men i prinsippet skal det fungere...
nu har jeg kun et lille problem og det er at den ikke skriver alle posterne som den skal men den skriver kun den sidste den laver godt nok plads til dem alle sammen se evt. her under
her skriver den ikke noget her skriver den ikke noget her skriver den ikke noget her skriver den noget
jeg har sat koden ind igen her hvis jeg skulle ha klokket i den.
<html> <head> <script> contentArr = new Array();
function fillList( id ){ // Deleting all options document.frm.targetSel.options.length = 0; tmpArr = contentArr[ id ]; for( i = 0; i < tmpArr.length; i++ ){ document.frm.targetSel.options[ document.frm.targetSel.options.length ] = new Option( tmpArr[ i ], tmpArr[ i ] ); } }
</script> </head> <body> <form name=\"frm\"> <select name=\"box\" onchange=\"fillList( this.selectedIndex );\"> <option value=\"\">Vælg Amt</option> <!-- #include file=\"database.asp\" --> <% SQL = \"SELECT * FROM AMT\" Set RS = Conn.Execute( SQL ) mainCounter = 1 subCounter = 1 while NOT RS.EOF response.write \"<option value=\"\"\" & RS(\"AMT\") & \"\"\">\" & RS(\"AMT\") & \"</option>\" subSQL = \"SELECT * FROM KOMMUNER WHERE AMT = \'\" & RS(\"AMT\") &\"\'\" Set subRS = Conn.Execute( subSQL ) while NOT subRS.EOF %> <script> subArr = new Array(); subArr[<%= subCounter %>] = \'<%= subRS(\"KOMMUNE\") %>\'; </script> <% subCounter = subCounter + 1 subRS.MoveNext wend subRS.Close Set subRS = nothing %> <script> contentArr[<%= mainCounter %>] = subArr; </script> <% mainCounter = mainCounter + 1 RS.MoveNext wend RS.Close Set RS = nothing %> </select><br> <select name=\"targetSel\"> <option value=\"\"></option> </select> </form> </body> </html>
oki...jeg kan godt se at det var noe galt. Denne kode fungerer iallefall for meg...håper det er tilstrekkelig...
<html> <head> <script> var contentArr, subArr, tmp; contentArr = new Array(); subArr = new Array(); contentArr[0] = null; mainCounter = 1; subCounter = 0;
function fillList( id ){ // Deleting all options document.frm.targetSel.options.length = 0;
if( id > 0 ){ tmpArr = contentArr[ id ]; for( i = 0; i < tmpArr.length; i++ ){ document.frm.targetSel.options[ document.frm.targetSel.options.length ] = new Option( tmpArr[ i ], tmpArr[ i ] ); } } }
Jeg takker mange gang nute det funger bare som det skal nu.
Synes godt om
Ny brugerNybegynder
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.