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
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 :-)
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 :-)