Avatar billede cool_casper Nybegynder
24. februar 2004 - 09:53 Der er 7 kommentarer og
1 løsning

Give fokus til focus boks (2. version)

Hej,

Jeg har tidligere fået lavet noget sådan jeg kan bringe fokus til et element i en select-boks ved at indtaste et varenummer.
Se http://www.eksperten.dk/spm/468819
Men nu har jeg en udvidelse til scriptet. Man skal kunne indtaste en del af eller hele ord, af varenavnet, som den skal markere i select boksen. Sådan så hvis jeg f.eks. indtaster "logitech" i en selectboks skal den markere det første element i boksen hvor ordet "logitech" indeholder i varenavnet.

Se mere her: http://130.227.204.170/admin/addproduct.asp

Jeg har prøvet sådan her, men det virker ikke helt efter hensigten:

function findMatch2(val){
    sel = document.getElementById('productID');
    for(i=0;sel.length>i;i++){
        myString = new String(sel.options[i].name)
        rExp = /'+val+'/gi;
        if (myString.search(rExp) <= 1){       
            sel.options[i].selected = true;
            sel.selectedIndex = i;
        break;
        }
    }
}

Hvordan skal min function se ud hvis jeg skal gøre det?
Avatar billede nute Nybegynder
24. februar 2004 - 09:59 #1
hmm ... den aller nemmeste måde, ville jo være at have en tekstbox hvor du kan skrive ind fx 'logitech'. ud fra værdien i dette felt, kan du så sætte fokus på det element der matcher i listen.

problemet ligger i at du er nødt til at gemme hvilke taster du trykker ned. det kan sagtens lade sig gøre (men er lidt bøvlet at lave), men jeg ville først høre om det løsningsforslag for oven ikke var en løsning ?

/nute
Avatar billede nute Nybegynder
24. februar 2004 - 10:01 #2
ahh... undskyld ... du ønsker jo at kunne skrive 'logitech' i 'varenavn' feltet og derefter få 'logitech' markeret ?
Avatar billede cool_casper Nybegynder
24. februar 2004 - 10:04 #3
Præcis ja..
Hvis du ser min side på http://130.227.204.170/admin/addproduct.asp kan du se hvordan det er lavet med varenummer og feltet med varennavn ved siden af..

Ovenståeden funktion virker ikke - den markerer desværre bare det øverste element i select-boksen.. :\
Avatar billede nute Nybegynder
24. februar 2004 - 10:07 #4
din tekstbox skal være:

<input name="varenavn" id="varenavn" type="text" class="body" size="12" value="Varenavn" OnFocus="if (this.value=='Varenavn'){this.value=''};" OnBlur="if (this.value==''){this.value='Varenavn'};" OnKeyUp="findMatch2(document.all.varenavn.value);" OnKeyPress="findMatch2(document.all.varenavn.value);">

derefter skal din funktion være:

    function findMatch2(val){
    sel = document.getElementById('productID');
    for(i=0;sel.length>i;i++)
    {
        if( sel.options[i].text.indexOf( val ) == 0 )
        {
            sel.options[i].selected = true;
            sel.selectedIndex = i;
            break;
        }
    }
}

/nute
Avatar billede cool_casper Nybegynder
24. februar 2004 - 10:22 #5
Så er det sat ind.. Men det virker ikke 100% - hvis jeg skriver "15m" f.eks. bringer den godt nok fokus til et element, men hvis jeg skriver "logitech" sker der ikke noget! :\
Avatar billede nute Nybegynder
24. februar 2004 - 10:26 #6
ah ... det er fordi logitech staves med stor 'L' i starten, og javascript er casesensitive ;o] ... det du skal gøre, er at lave din funktion om til:

    function findMatch2(val){
    sel = document.getElementById('productID');
    var strFindVal = val.toUpperCase();
    for(i=0;sel.length>i;i++)
    {
        var strSelText = sel.options[i].text.toUpperCase();
       
        if( strSelText.indexOf( strFindVal ) == 0 )
        {
            sel.options[i].selected = true;
            sel.selectedIndex = i;
            break;
        }
    }
}

så vil du lave alle strenge om til uppercase inden du sammenligner. på denne måde vil du så ignorere små og store bogstaver

/nute
Avatar billede cool_casper Nybegynder
24. februar 2004 - 10:33 #7
Ohh.. Den havde jeg heller ikke lige tænkt over! :o)

Super, så tror jeg også produktsøgning er god nok nu! Det håber jeg..
Tusinde tak - forsat god dag! :o}
Avatar billede nute Nybegynder
24. februar 2004 - 10:35 #8
goodie :o]

fortsat god dag til dig også ...

/nute
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