28. januar 2003 - 10:27Der er
5 kommentarer og 1 løsning
Intiligent tekst felt
Er det muligt at lave et tekstfelt som søger i databasen efter de tegn man skriver, og forslår så det førdige ord. eks lige som når man skriver en url i internet expolere så forslår den de sider man har besøgt, udfra det man indtaster
Tror sgu det bli'r svært at strikke sammen, og hvis det lykkes kunne jeg forestille mig at du skal over i noget javascript i stedet for.
Problemet er, at ASP'en afvikles før HTML'en, så dit tekstfelt vil være genereret efter alle databasekald er blevet afsluttet. Dermed skal du nok over i at proppe alle dine ord i et javascript-array eller noget, og jeg kunne forestille mig at det endte med at blive MEGET tungt for både server og klient.
Jeg ved dog ikke om det ville kunne lade sig gøre, hvis du fik strikket en eller anden form for komponent sammen, der kunne køre på serveren, men stadigvæk tror jeg det bliver svært.
Vil dog gerne høre, hvis du finder en løsning på det :-)
Synes godt om
Slettet bruger
28. januar 2003 - 10:38#3
Ved ikke stiv du er i scripting og div. andre teknologier, men jeg ville nok prøve flg:
1) Læs via ASP værdierne i databasen ind i et JavaScript array (eller andet client-side script).
2) Sæt JavaScript til at lytte efter keystrokes på takstfeltet.
3) Når brugeren taster i tekstfeltet, så søg i array'et efter ord, der ligner, det, der er indtastet.
- Men du skal i så fald smide data fra hele database-tabellen over til klienten/browseren hver gang, siden hentes, og det kan godt være et problem mht performance og sikkerhed.
Set conntemp = Server.CreateObject("ADODB.Connection") conntemp.Open DSN SQLAUTOCOMPLETE = "SELECT * FROM TABEL" Set rsAutoComplete = conntemp.Execute(SQLAUTOCOMPLETE)
Do While Not rsAutoComplete.EOF myOptions = myOptions & "'" & rsAutoComplete("DIT_FELT") & "'," rsAutoComplete.MoveNext Loop
myOptions = Left(myOptions,Len(myOptions)-1)
rsAutoComplete.Close Set rsAutoComplete = Nothing %> <script> function matchFieldSelect (field) { var found = false; for (var i = 0; i < myOptions.length; i++) if ((found = myOptions[i].toLowerCase().indexOf(field.value.toLowerCase()) == 0)) break; if (field.createTextRange) { var cursorKeys ="8;46;37;38;39;40;33;34;35;36;45;" if (cursorKeys.indexOf(event.keyCode+";") == -1) { var r1 = field.createTextRange() var oldValue = r1.text; var newValue = found ? myOptions[i] : oldValue; if (newValue != field.value) { field.value = newValue var rNew = field.createTextRange() rNew.moveStart('character', oldValue.length) rNew.select() } } } }
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.