webForumDet fria alternativet

realtidssökning via sökfält

2 svar · 385 visningar · startad av rollo

rolloMedlem sedan aug. 2001203 inlägg
#1

Tjena!

Jag vill skapa en sökning som söker direkt på det som användaren fyller i i en sökrutan.

Ett exempel:
Jag börjar skriva apelsin i fältet och samtidigt som jag skriver i bokstav för bokstav så börjar sökningen, dvs när jag skrivit in ap så visas både apelsin och apa i resultatet i ett fält under.

Jag har sökt, både här och på andra ställen, men har inte kunnat hitta någon bra lösning!

Tar tacksamt emot tips!

rollo

//EDIT
funktionen skall ligga på en JSP sida och det som skall sökas i finns i contexten för sidan

SebastianEMedlem sedan nov. 2004100 inlägg
#2

Scha W3Schools har något exempel. Det blir självfallet ajax i fallet.

Har en liknade funktion. Du kan titta lite på koderna

    if(funktion=='visaStugOmraden'){
        var sokruta = document.getElementById("omrade");
        var sokrutaValue = sokruta.value;
        var omradeTips = document.getElementById('omradeTips');
        
        if(sokrutaValue.length>=1 && ajax.forstaSokningen==false){
            ajax.forstaSokningen=true;//Gör så att man inte loopar områderna flera gånger
            ajax.stugOmraden = new Array()
            ajax.omrSluta = data.getElementsByTagName('omrade').length;
            
            for(var i = 0; i < ajax.omrSluta; i++) {
                omrade = data.getElementsByTagName('omrade')[i].firstChild.nodeValue;
                ajax.stugOmraden[i] = omrade;
            }
        }
        
        //Skapa själva sökfunktionen
        /*Det hela går ut på att man tar ut vad man har skrivit i textboxen Ex: Ka. Man tar
        då ut längden för Ka=2 som man tar ut -1 för att det ska passa arrayen. 
        Sedan kör man en if-sats.*/
        stoppSokRuta=sokrutaValue.length;
        var jamSokOrd = sokrutaValue.substring(0,stoppSokRuta)
        
        for(var i = 0; i < ajax.omrSluta; i++) {
            var jamfor = ajax.stugOmraden[i].substring(0,stoppSokRuta).toUpperCase();
            if(sokrutaValue.toUpperCase()==jamfor){
                omradeTips.innerHTML='Tips på område: '+ajax.stugOmraden[i];
            }
        }
                
       if(sokrutaValue.length==0){
            omradeTips.innerHTML='';
       }
    }
rolloMedlem sedan aug. 2001203 inlägg
#3

Tackar!
Skall testa det!

253 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
128 ms — hämta forumlista (db)
122 ms — hämta statistik (db)
128 ms — hämta tråd, inlägg och bilagor (db)