Avatar billede mr_mudderkode Nybegynder
18. oktober 2001 - 11:38 Der er 13 kommentarer og
1 løsning

Opdatering af select-box

Jeg har to input felter. En select-box med en lang liste over navne som er sorteret i alfabetisk rækkefølge. Det andet er en text-box hvor man manuelt kan indtaste et navn.

Nu vil jeg gerne have at hvis man indtaster noget i text-boxen, så springer select-boxen automatisk til det punkt i valglisten der passer med det indtastede.

Hvis der eksempelvis er en valgmulighed Odense i select-boxen, så springer den derned så snart jeg eksempelvis skriver \"od\" i textboxen.

Hvordan kan det gøres?
Avatar billede roenving Novice
18. oktober 2001 - 11:47 #1
i din textbox:

<input type=\"text\" name=\"txtinput\" onChange=\"ChooseSelection();\">

og et javascript (f.eks. i head-sektionen):

<script type=\"text/javascript\">
function ChooseSelect(){
var sel=document.formNavn.selectNavn;
var txt=document.formNavn.txtinput.value
for (i=0;i<sel.length;i++){
  if (sel[i].value==txt){
    sel.selectedIndex=i;
    return;
  }
}
}

hth
jes
Avatar billede roenving Novice
18. oktober 2001 - 11:48 #2
Der mangler lige et ; efter txtinput.value
Avatar billede tknudsen Nybegynder
18. oktober 2001 - 11:50 #3
function selectItem(cbObj,objItem)
{
    var i;

    for(i=0;i<cbObj.options.length;i++)
        cbObj.options[i].selected = cbObj.options[i].value==objItem.value;

}


<input type=\"text\" name=\"bynavn\" onKeyUp=\"selectItem(document.all(\'byer\'),this)\">

<select name=\"byer\">
</select>
Avatar billede mr_mudderkode Nybegynder
18. oktober 2001 - 12:16 #4
Hmmm. Ikke helt. Der skiftes jo kun i selectboxen hvis HELE ordet matcher... Jeg ønsker at skifte så snart en del af det er tastet ind.

Jeg ved ikke om jeg har været lidt fedtet, så jeg har sat point op til 100
Avatar billede tknudsen Nybegynder
18. oktober 2001 - 12:17 #5
hva faen !?

:-)
Avatar billede tknudsen Nybegynder
18. oktober 2001 - 12:18 #6
nårh ja...


    for(i=0;i<cbObj.options.length;i++)
        cbObj.options[i].selected = cbObj.options[i].value.indexOf(objItem.value) != -1;

Avatar billede roenving Novice
18. oktober 2001 - 12:32 #7
<script type=\"text/javascript\">
function ChooseSelect(){
var sel=document.formNavn.selectNavn;
var txt=document.formNavn.txtinput.value
for (i=0;i<sel.length;i++){
  if (sel[i].value.indexOf(txt)==0){
    sel.selectedIndex=i;
    return;
  }
}
}
Avatar billede tknudsen Nybegynder
18. oktober 2001 - 12:34 #8
men hvis du feks skriver et \'a\' - skal focus så sættes på \'aars\' eller \'aztek\' (første eller sidste) ?
Avatar billede tknudsen Nybegynder
18. oktober 2001 - 12:48 #9
vælger første match:

for(i=0;i<cbObj.options.length;i++)
  if(cbObj.options[i].value.indexOf(objItem.value) != -1)
  {
        cbObj.options[i].selected = true;
        break;
  }


vælger sidste match:

for(i=0;i<cbObj.options.length;i++)
        cbObj.options[i].selected = cbObj.options[i].value.indexOf(objItem.value) != -1;
Avatar billede tknudsen Nybegynder
18. oktober 2001 - 12:49 #10
så alt-i-alt bliver det til enten:

function selectItem(cbObj,objItem)
{
  var i;

  for(i=0;i<cbObj.options.length;i++)
  if(cbObj.options[i].value.indexOf(objItem.value) != -1)
  {
        cbObj.options[i].selected = true;
        break;
  }


}

eller:

function selectItem(cbObj,objItem)
{
    var i;

    for(i=0;i<cbObj.options.length;i++)
        cbObj.options[i].selected = cbObj.options[i].value==objItem.value;

}
Avatar billede mr_mudderkode Nybegynder
18. oktober 2001 - 13:40 #11
Jeg fik tknudsens version til at fungere... NÆSTEN efter hensigten. Den hopper korrekt til Odense hvis jeg taster et stort O men ikke hvis jeg taster et lille. Hvordan får jeg den til at ignorere forskellen på store og små bogstaver?

(Jeg smider 20 point ekstra i til dette ekstra spørgsmål)
Avatar billede tknudsen Nybegynder
18. oktober 2001 - 13:49 #12
.toUpperCase();


function selectItem(cbObj,objItem)
{
  var i;

  for(i=0;i<cbObj.options.length;i++)
  if(cbObj.options[i].value.indexOf(objItem.value.toUpperCase()) != -1)
  {
        cbObj.options[i].selected = true;
        break;
  }


}
Avatar billede roenving Novice
18. oktober 2001 - 13:50 #13
Bruger toUpperCase både foran og bagved sammenligningstegnet, altså:

.value.toUpperCase.indexOf
Avatar billede mr_mudderkode Nybegynder
18. oktober 2001 - 13:51 #14
Sorry roenving. Du svarede ligsom jeg accepterede, da jeg selv havde løst ekstraspørgsmålet... :-(

Jeg smider 20 point til dig...
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