Avatar billede nil.dk Nybegynder
09. august 2000 - 11:40 Der er 19 kommentarer og
1 løsning

Autofuldførelse af dropdownmenu

Okay, hvis denne her kan løses bliver jeg meget glad... der er flere points....

Jeg har en dropdownmenu, der vha. ASP får sine data fra en Accessdatabase. Data er en lang række af navne (flere hundreder).

Nu er det sådan at hvis man hedder Zabrina Zørensen... så skal man scrolle MEGET langt ned for at finde sig selv.

Jeg ved, at hvis man skriver f.eks. \"Z\" så ryger man ned i starten af dem der starter med \"Z\".

Det jeg skal bruge er en funktion, der gør at man kan skrive videre... lad os sige at der er mange personer, der hedder Mette... Så skal man kunne skrive \"Mette Je\" og så ryger man langsomt ned til \"Mette Jensen\".. forstår I? Ligesom i mange Windowsprogrammer.

Det SKAL kunne virke på både PC og Mac...

Håber nogen kan hjælpe...
Avatar billede krogstrup Nybegynder
09. august 2000 - 11:47 #1
Det kan IKKE lade sig gøre i en normal <SELECT> box !!!

Problemet er at det ikke er dig der styrer dropdownen´s opførsel, men derimod browseren!
Avatar billede nil.dk Nybegynder
09. august 2000 - 11:57 #2
Jeg ved at det er browseren, der bestemmer.. men er det ikke muligt at programmere sig ud af det vha. JavaScript?

Hvis ikke, skal jeg bruge en anden måde hvorpå folk hurtigt og enkelt kan vælge deres navn på en liste..
Avatar billede moses Praktikant
09. august 2000 - 12:07 #3
Jeg er ikke så meget inde i ASP, men for at trigge et par af de seje gutter her på EKSPERTen, så vil jeg lige foreslå følgende:

Hvad med at lade inputtet til dropdown menuen være afhængig af de allerede indtastede tegn.

På den måde vil listen starte tættere og tættere på det ønskede navn.
Avatar billede nil.dk Nybegynder
09. august 2000 - 12:11 #4
moses >>

Det er netop dette jeg ønsker.

Jeg tror dog ikke at det kan gøres med ASP, da det skal ske \"on the fly\"..
Avatar billede moses Praktikant
09. august 2000 - 12:16 #5
Jo det kan.

ASP kan jo bare hente alle navnene ind i et array i alfabetisk orden, så det ikke tager tid at hente for hvert tastetryk.
Dernæst skal der være en \"OnChange\" event rutine, der køres hver gang der ændres i inputfeltet i dropdown menuen.
Rutinen skal bare kun tage listen fra et bestemt punkt i array\'et og nedad, sætte det ind i dropdown menuens liste og så refresh\'e den.
Avatar billede nil.dk Nybegynder
09. august 2000 - 12:19 #6
moses >> Det lyder som noget godt... hvis der er nogen der kan lave dette for mig.... så !!!!
Avatar billede krogstrup Nybegynder
09. august 2000 - 12:20 #7
Ovenstående er på ingen måde en holdbar løsning! Det kan ikke nytte nåde at siden skal genindlæses hver gang brugeren har tastet et tegn !

Det bliver både langsomt og forvirrende at se på.

Hvis det skal gøres, skal det ordnes 100% på klientens maskine, så brugeren ikke konstant skal vente på at få svar fra serveren.

Hvis du nu både havde et input felt og en select, kunne du muligvis ved hjælp af javascript lave det sådan at når man indtastede et navn i input feltet, søgte javascriptet på det navn i select boxen og valgte det hvis det fandtes...

Måske en mulighed... ?
Avatar billede krogstrup Nybegynder
09. august 2000 - 12:21 #8
ups

\"det kan ikke nytte nåde\"
skulle selvfølgelig have været
\"det kan ikke nytte noget\"
Avatar billede moses Praktikant
09. august 2000 - 12:23 #9
Jeg kan godt se, at ASP er en lang vej, fordi den skal tilbage til serveren hver gang og sende siden - det havde jeg ikke lige tænkt på, men så har du jo svaret:

Siden sættes op med ASP og arbejder så videre hos klienten i Javascript.

OG så skal den udføre det, som jeg foreslog.
Avatar billede nil.dk Nybegynder
09. august 2000 - 12:36 #10
Krogstrup >>

Kan det lade sig gøre på den måde at når man rykker ned i rækken af navne i select-boxen, i samme tempo som man skriver bogstaver i input-boxen?

Og det vigtigste: Tror du det er noget du kan lave?
Avatar billede krogstrup Nybegynder
09. august 2000 - 12:41 #11
jeg tror godt det kan lade sig gøre i et fornuftigt tempo, men jeg tror ikke jeg er mand for at udføre javascriptet. Hvis du derimod kan få olebole´s opmærksomhed, er jeg ganske sikker på at han i hvert fald kan lave det (hvis det er muligt).
Avatar billede olebole Juniormester
09. august 2000 - 16:59 #12
<ole>
Tak for tilliden, Krogstrup  ;o)
Nu er jeg jo på maillisten til denne kategori (surpriiiiize...!!!), så det er meget let at få min opmærksomhed her.

Ja, det kan jeg godt finde en acceptabel løsning på...kikker på det senere i aften  ;o)
/Vh
</bole>
Avatar billede nil.dk Nybegynder
10. august 2000 - 09:11 #13
Det lyder sørme rigtig, rigtig godt olebole :-)
Avatar billede olebole Juniormester
10. august 2000 - 13:48 #14
<ole>
Undskyld forsinkelsen...har haft andet at kæmpe med  :o(
Her er den så. Du skal bare lægge action, method og andre input-felter og knapper ind i formen \'f2\' - og så fylde dine <option>\'s ud med ASP. God fornøjelse  ;o)

<html>
<head>
<script language=\"JavaScript\">
<!--

var mySel;
var names = new Array();
function fillArray() {
    mySel = document.f2.mySelect;
    for (i=0; i<mySel.length-1; i++) {
        names[i*2] = mySel.options[i+1].text;
        names[(i*2)+1] = mySel.options[i+1].value;
    }
    document.f1.userText.focus();
}
var myName,myText,whichTemp;
function findName() {
    myText = document.f1.userText.value.toLowerCase();
    for (j=0; j<myText.length; j++) {
        checkChar(j);
        if (((whichTemp) > which) && ((whichTemp) < (names.length/2))) {
            which = whichTemp;
        }
    }
    return which;
}
function checkChar(myChar) {
    whichTemp = 0;
    for (i=0; i<names.length; i+=2) {
        myName = names[i].toLowerCase();
        if (myText.substring(0,myChar+1) == myName.substring(0,myChar+1)) {
            return true;
        }
        whichTemp++;
    }
}
function setSelect() {
    which = 0;
    document.f2.mySelect.length = (names.length/2)-(which);
    if (document.f1.userText.value != \"\") {
        findName();
    }
    inx = which*2;
    for (i=0; i<(names.length/2)-(which); i++) {
        mySel.options[i].text = names[inx];
        mySel.options[i].value = names[inx+1];
        inx += 2;
    }
    mySel.options[0].selected = true;
    document.f2.mySelect.length = (names.length/2)-(which);
    document.f1.userText.focus();
}

// -->
</script>
</head>

<body bgcolor=\"#FFFFFF\" onload=\"fillArray();\">

<!--  Her kommer en hjælpeform  -->
<form name=\"f1\">
    <input type=\"text\" name=\"userText\" onkeyup=\"setSelect()\">
</form>

<!--  Her kommer din \'rigtige\' form. I nederste <option> 
      skal fylde op med lige så mange nobreak-spaces,
      som du har bogstaver i det længste navn.
      Det må du altså aftaste ved DB-udtrækket.  -->
<form name=\"f2\">
  <select name=\"mySelect\" onchange=\"document.f1.userText.value = \'\'\">
    <option value=\"noneSelect\" selected>V&aelig;lg navn</option>
    <option value=\"val_Anders_C\">Anders Christiansen</option>
    <option value=\"val_Anne_E\">Anne Eltard</option>
    <option value=\"val_Anne_S\">Anne S&oslash;rensen</option>
    <option value=\"val_Arne_C\">Arne Clausen</option>
    <option value=\"val_Bente_J\">Bente Jensen</option>
    <option value=\"val_Birger_H\">Birger Hjelmbjerg</option>
    <option value=\"val_Bitten_H\">Bitten Hansen</option>
    <option value=\"val_Bjarne_J\">Bjarne Jensen</option>
    <option value=\"val_Bjarne_P\">Bjarne Petersen</option>
    <option value=\"val_Bodil_J\">Bodil J&oslash;rgensen</option>
    <option value=\"val_Bodil_J\">Bo Swensson</option>
    <option value=\"val_Carl_S\">Carl Smart</option>
    <option value=\"val_Christina_F\">Christina Folting</option>
    <option value=\"val_Dan_S\">Dan Steinman</option>
    <option value=\"val_Dino_M\">Dino Madsen</option>
    <option value=\"noneSelect\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</option>
  </select>
</form>

<a href=\"java script:alert(document.f2.mySelect.options[document.f2.mySelect.options.selectedIndex].value);\">Check v&aelig;rdi</a>
</body>
</html>

Tak for opgaven. Den var en sej bitch, men sjov  ;o)
/Vh
</bole>
Avatar billede krogstrup Nybegynder
10. august 2000 - 13:54 #15
Hmm, så´n skal det gøres !

Det virker jo formidabelt Ole :-)
Avatar billede nil.dk Nybegynder
10. august 2000 - 14:33 #16
Ole >>

Det er simpelthen de bedste points jeg har givet ud nogensinde.
Avatar billede nil.dk Nybegynder
10. august 2000 - 14:34 #17
Det virker præcis som jeg har brug for... dem jeg programmerer for bliver ellevilde *S*
Avatar billede jumper Nybegynder
10. august 2000 - 14:42 #18
Øvz, jeg kom for sent ;)

Ole, du er ved at blive hurtigere end mig *G*

/Thor
Avatar billede olebole Juniormester
10. august 2000 - 15:22 #19
Det var faktisk dig, jeg engang så løse et problem med at \'fylde\' én select på baggrund af valget i en anden. Dér lærte jeg det...Tak! ;o))

Du nærer en slange ved dit bryst...!!!...Sssssss!...LOL!
/Vh
Avatar billede jumper Nybegynder
10. august 2000 - 15:27 #20
*rofl*

/Thor
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester