22. maj 2004 - 22:50
Der er
24 kommentarer og 1 løsning
Når valg af punkt i SELECT-boks foretages, skal handling udføres
Jeg har en select-boks med 2 valg: <select size="1" name="chose"> <option selected>Foretag et valg</option> <option value="choise1">Valg 1</option> <option value="choise2">Valg 2</option> </select> <% If Request.Form("chose") = "choise1" Then %> Mulighed 1 <% Else %> Mulighed 2 <% End If %> Meningen er, at når der er valgt, skal Mulighed 1 eller 2 automatisk dukke op. Formularen skal ikke submittes, men den ene eller den anden mulighed skal dukke op automatisk. Kringlet? :o)
Annonceindlæg fra HP
<select size="1" name="choice" onchange="for(i=1;this.length>i;i++)document.getElementById(this.options[i].value).style.display=(this.options[i].selected)?'block':'none';"> <option selected>Foretag et valg</option> <option value="choice1">Valg 1</option> <option value="choice2">Valg 2</option> </select> <div id="choice1" style="display:none;"> Mulighed 1 </div> <div id="choice2" style="display:none;"> Mulighed 2 </div>
Den er jo lige i øret, roenvig :o) Lægger du et svar?
roenvig, er der nogen restriktioner, forstået på den måde, at det altsammen SKAL ligge i samme <td></td>? Jeg har lidt problemer med at få det til at funke, når jeg laver <div id="choice1" style="display:none;"> <tr> <td>Mulighed 1</td> </tr> </div> <div id="choice2" style="display:none;"> <tr> <td>Mulighed 2</td> </tr> </div>
<tr id="choice1" style="display:none;"> <td>Mulighed 1</td> </tr> <tr id="choice2" style="display:none;"> <td>Mulighed 2</td> </tr>
Tabellen ser sådan her ud: <table> <tr> <td> <select size="1" name="choice" onchange="for(i=1;this.length>i;i++)document.getElementById(this.options[i].value).style.display=(this.options[i].selected)?'block':'none';"> <option selected>Foretag et valg</option> <option value="choice1">Valg 1</option> <option value="choice2">Valg 2</option> </select> </td> </tr> <div id="choice1" style="display:none;"> <tr> <td>Mulighed 1</td> </tr> </div> <div id="choice2" style="display:none;"> <tr> <td>Mulighed 2</td> </tr> </div> </table>
Ok, så ikke dit indlæg. Prøver
Det virker. Så har jeg lige et sidste spørgsmål (opretter nyt spørgsmål): Kan det lade sig gøre at flytte focus til Mulighed 1 (TEXT-boks) eller Mulighed 2 (SELECT-boks), afhængigt af valget?
Ja, selvfølgelig, men så ville jeg nok foretrække at lave en funktion !-)
Ok, er du man for det? :o)
<script type="text/javascript"> function selChoice(sel){ for(i=1;sel.length>i;i++){ document.getElementById(sel.options[i].value).style.display=(sel.options[i].selected)?'block':'none'; } if(sel.selectedIndex>0){ document.getElementById(sel.value).firstChild.firstChild.focus(); } } </script> <form> <table> <tr> <td> <select size="1" name="choice" onchange="selChoice(this)"> <option selected>Foretag et valg</option> <option value="choice1">Valg 1</option> <option value="choice2">Valg 2</option> </select></td> </tr> <tr id="choice1" style="display:none;"> <td><input type="text" name="txtChoice1"></td> </tr> <tr id="choice2" style="display:none;"> <td> <select size="1" name="selChoice2"> <option selected>Foretag et valg</option> <option value="choice1">Valg 1</option> <option value="choice2">Valg 2</option> </select></td> </tr> </table> </form>
Jeg får lige denne fejl: Linie 17 Tegn 5 Fejl: Objektet støtter ikke denne egenskab eller metode Linie 17 document.getElementById(sel.value).firstChild.firstChild.focus(); Siger det dig noget?
Har du indsat felterne ?-)
Ja, men jeg har så angivet andre navne end txtChoice1 og selChoice2. Men det er vel også sagen uvedkommende? Vi taler om det samme, gør vi ikke? :o)
Hvis du har indsat tekst foran, vil du sikkert få en fejlmelding, som ligner den ... Måske med en nextSibling på også !-)
Navnene er ganske rigtigt bedøvende, som det er gjort, men har du noget foran felterne i cellerne, skal vi finde frem til felterne, f.eks. sådan: document.getElementById(sel.value).firstChild.firstChild.nextSibling.focus();
Hmm? Tekst foran hvilket?
Jeg har to celler: <tr> <td>Tekst 1</td> <td><text-boks></td> </tr> <tr> <td>Tekst 2</td> <td><select-boks></td> </tr>
document.getElementById(sel.value).firstChild.nextSibling.firstChild.focus();
Eller: document.getElementById(sel.value).childNodes[1].firstChild.focus();
For mig virkede både 00.46 og 00.50, for de siger præcis det samme !-)
Ok, jeg prøvede nu kun den sidste, gik ud fra, at du måske lige var kommet på en rettelse :o)
Det er fedt, roenvig! 324763546354 tak for hjælpen. Svarer du på
http://www.eksperten.dk/spm/501316? Tag dig ikke af de vittige hoveder :o)
Vi tilbyder markedets bedste kurser inden for webudvikling