21. oktober 2004 - 21:24Der er
11 kommentarer og 1 løsning
Autoselect af option i <select>
Hej, jeg skal bruge lidt hjælp... jeg sidder og bakser med at få selected en option i en <select> automatisk, baseret på et nr der står i en mysql database... hvad jeg har nu, er et script der bl.a. fylder to select bokse, hvorefter select nr. 2 skal sættes til den entry nr. 1 referere til i databasen... jeg har en funktion jeg køre via onChange i nr. 1, der har jeg så en if-else, der afgøre om den pågældende option skal være selected, det eneste jeg mangler er en funktion der kan markere den pågældende option som selected....
min funktion ser sådan ud:
function select_kunde(pid, mid, selected) { // mid er lig selectbox nr. 1's value... // pid er id'et på select nr. 2... // selected er det id select nr. 1 refererer til...
if (document.getElementById(pid).value == "NULL") document.getElementById(pid).options.length=1; //reset projekt select... else document.getElementById(pid).options.length=0; //reset projekt select...
for (var i = 0; i <= array_count; i ++) { if (kundenr[i] == mid) { if (pnr[i] == selected) { document.getElementById(pid).options[document.getElementById(pid).options.length] = new Option(beskrivelse[i].substr(0,28), pnr[i]); } else document.getElementById(pid).options[document.getElementById(pid).options.length] = new Option(beskrivelse[i].substr(0,28), pnr[i]); } } }
function select_kunde(pid, mid, selected) { // mid er lig selectbox nr. 1's value... // pid er id'et på select nr. 2... // selected er det id select nr. 1 refererer til...
var sel = document.getElementById(pid); if (sel.value == "NULL") sel.options.length=1; //reset projekt select... else sel.options.length=0; //reset projekt select...
for (var i = 0; i <= array_count; i ++) { if (kundenr[i] == mid) { sel.options[sel.length] = new Option(beskrivelse[i].substr(0,28), pnr[i]); if (pnr[i] == selected) sel.options[sel.length-1].selected = true; } } }
-- og er det rigtigt, at array_count-variablen indeholder et tal, som er en mindre end antallet ?-)
hmm... wierd... bør man kunne give sig selv point? så er det da ingen sag at få top score :-/
anyways... hvis jeg gør: for (var i = 0; i < array_count; i ++) { vil der jo være een for lidt i den sidste ende... da array_count er lig antallet... så hvis antallet er 6 (+ 0 = 7) vil nr. 6 ikke blive kørt igennem, idet 6 ikke er mindre end 6... :)
Jeg regner med at php på dette område har det præcist som javascript, derfor skrev jeg som jeg gjorde @ 21/10-2004 22:49:28 ...
-- så hvis du laver et array på 6 elementer, vil array[6] være undefined !-)
-- men du kan gøre det lidt lettere for dig selv, ved at:
<?php $sql = @mysql_query("SELECT projekter.kundenr, projekter.projekt_nr, projekter.beskrivelse FROM projekter WHERE projekter.slut_dato > CURDATE()") or die("--></script><strong>MySQL forespørgslen kunne ikke udføres!</strong><br><br>" . mysql_error() . '<p id="bottom" class="main_control"></p>'); while ($row = mysql_fetch_array($sql)) { ?> kundenr[kundenr.length] = <?php echo $row['kundenr'] ?>; pnr[pnr.length] = <?php echo $row['projekt_nr'] ?>; beskrivelse[beskrivelse.length] = "<?php echo substr($row['beskrivelse'],0,40) ?>"; <?php } ?>
-- og så rette linjerne midt i js-koden til:
for (var i = 0; i < pnr.length; i ++) { if (kundenr[i] == mid) {
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.