Avatar billede bronsholt Nybegynder
19. januar 2004 - 15:43 Der er 5 kommentarer

Opdatering ved tastetryk til combobox

Jeg har to felter: et tekstfelt og en combobox. Combobox'ens recordset skal opbygges på grundlag af det, der står i tekstfelt... eksempel:

Jeg taster 'L' i tekstfeltet, combobox'ens indhold skifter til det, som starter med 'L'

Derefter tastes 'A' i tekstfeltet, og combobox'ens indhold skrifter nu til det, der starter med 'LA'

etc etc...

Kan det lade sig gøre i ASP på en OnClick event eller lign.?


Mvh.
Brønsholt
Avatar billede ellebaek Nybegynder
19. januar 2004 - 15:45 #1
det kan ikke lade sig gøre i ASP...
Avatar billede mm12010 Nybegynder
19. januar 2004 - 15:45 #2
http://www.phoenixv.dk/arkiv.html >> Formularer >> Dynamisk select-boks
Avatar billede bronsholt Nybegynder
20. januar 2004 - 11:56 #3
-> mm12010

Jeg kan godt bruge princippet i dit script, men... Array'et er dynamisk opbygget fra recordset indeholdende felterne "Status" og "StatusBeskrivelse", det første som tal, det andet som tekst, og id'et for select-boxen skal være "Status", eksempel:

Jeg taster '5' i input-feltet(tal), combobox'ens indhold skifter til det, som starter med '5' (50,51,52,53,501,502....)

Derefter tastes '0' i input-feltet, og combobox'ens indhold skrifter nu til det, der starter med '50' (50,501,502...)
etc etc...

Det er det, jeg gerne vil, men det kan ikke lade sig gøre med nedenstående kode:


*************************************************************************************
<script type="text/javascript">
var arrStatus = new Array();
<%
i=0
sqlstat="SELECT Status, StatusBeskrivelse FROM Status ORDER BY Status"
set rsstat = conn.execute(sqlstat)

Do While Not rsstat.EOF
    i=i+1    %>
  arrStatus[<%=i%>] = <%=rsstat("Status")%>
  <%rsstat.MoveNext
Loop
rsstat.Close
'|| arrStatus[i].toLowerCase().indexOf(felt.value.toLowerCase()) == 0
%>

function opdater(felt) {
  selOpts = felt.form.sel.options;
  selOpts.length = 0;
  for (i = 1; i < arrStatus.length; i++)
      if (felt.value == "" || arrStatus[i].toLowerCase().indexOf(felt.value.toLowerCase()) == 0)
        selOpts[selOpts.length] = new Option(arrStatus[i], arrStatus[i]);

}

</script>
<body>
<input type="text" name="sFelt" onKeyUp="opdater(this);" style="width: 150px;" /><br />
<select name="sel>
<script type="text/javascript">
for (i = 0; i < arrStatus.length; i++)
  document.write('<option value="' + arrStatus[i] + '">' + arrStatus[i] + '</option>');
</script>
</select><br /><br /></body>
</html>
*************************************************************************************

...og det er hovedsageligt i sætningen: "...arrStatus[i].toLowerCase().indexOf(felt.value.toLowerCase()) == 0..." at den fejler og siger, at "...Objektet ikke understøtter denne metode..."

Please :-)
Avatar billede mm12010 Nybegynder
20. januar 2004 - 13:53 #4
hvordan ser kilde koden ud når asp'en er afviklet?
Avatar billede bronsholt Nybegynder
20. januar 2004 - 15:16 #5
->mm12010
Jeg har fundet ud af det:
Jeg manglede '"' omkring udtrækket:
...
arrStatus[<%=i%>] = "<%=rsstat("Status")%>"
...

Spørgsmålet er bare nu, hvordan jeg får StatusBeskrivelse med. Skal jeg ikke lave et to-dimensionelt array så? Og i så fald, hvordan kommer koden så til at se ud? Jeg tror, vi er på sporet :-)
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
Kurser inden for grundlæggende programmering

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