Avatar billede sho Nybegynder
26. december 2002 - 17:34 Der er 6 kommentarer og
1 løsning

Opdatering af side uden reload

Jeg er ny bruger af Eksperten, så bær over med mig, hvis jeg spørger dumt, men...

Jeg har en formular, hvor jeg med ASP genererer en række dropdown-bokse. Desuden er der mulighed for at indtaste de samme data i input-felter, hvis man f.eks. kender et ordrenummer i forvejen. Det er gjort sådan, fordi det er hurtigere at taste det end at slå det op i en dropdown.

Hver gang en bruger taster noget i et felt, vil jeg gerne checke indtastningen (onChange) og sætte selected i den  korresponderende dropdown-boks med den samme værdi - altså via et databaseopslag. Hvis den indtastede værdi er forkert, sætter jeg tekstfarven i input-feltet til #FF0000, for ikke at forstyrre brugeren med en alert-boks.

Kan det lade sig gøre uden at reloade siden, så brugeren stadig uhindret kan bruge tab-rækkefølgen?

Der henvises flere steder her på sitet til brug af skjulte frames eller iframes, men er det løsningen og hvordan adresseres de i praksis?

Koden er lidt kompleks, så jeg vil helst undgå at bringe den her.

Hvis ikke olebole har tid til at svare, så håber jeg at han har fået en værdig afløser, for de fleste spørgsmål i retning af det her, ser ud til at være besvaret af ham! :-)

-Søren
Avatar billede Slettet bruger
26. december 2002 - 17:46 #1
Jeg håber, du kan nøjes med mig...

For det er nemt nok at løse. Brug denne funktion:

<script>
function findSel(frm) {
val = frm.tekstFelt.value.toLowerCase();
sel = frm.selectBoks;
for (i = 0; i < sel.length; i++) {
if (sel.options[i].value.toLowerCase() == val) {
sel.selectedIndex = i;
return;
}
}
frm.tekstFelt.style.backgroundColor = "#FF0000";
}
</script>

Tekstfeltet:

<input type="text" name="tekstFelt" onBlur="findSel(this.form);">

Og select-boksen:

<select name="selectBoks">
...
</select>
Avatar billede Slettet bruger
26. december 2002 - 17:49 #2
Ovenstående gør, at når brugeren har indtastet noget i tekst-feltet og går væk fra det, vælges den option, hvis value er lig med det indtastede.
I øvrigt bør funktionen nok se således ud:

function findSel(frm) {
felt = frm.tekstFelt;
val = felt.value.toLowerCase();
if (val != "") {
sel = frm.selectBoks;
for (i = 0; i < sel.length; i++) {
if (sel.options[i].value.toLowerCase() == val) {
felt.style.backgroundColor = "#000000";
sel.selectedIndex = i;
return;
}
}
felt.style.backgroundColor = "#FF0000";
}
}
Avatar billede sho Nybegynder
27. december 2002 - 10:14 #3
Tak, det ser ud til at virke, men jeg har mange sæt af input/select, så kræver det en funktion pr. sæt at overføre navnene på felterne, eller kan jeg parametisere dem? De unikke navne bruger jeg jo, når jeg submitter formen. Det kan jeg sikkert sagtens, men jeg er ikke så hård til java :-|
Avatar billede sho Nybegynder
27. december 2002 - 11:58 #4
Nu ser det ud til, at jeg har fået det til at virke selv. Tilbage er kun ét problem. Jeg synes at backgroundcolor er lige voldsom nok at skifte, så jeg vil gerne ændre det til kun at være teksten, der bliver rød. Hvad hedder den attribut i Java? Så vidt jeg kan finde ud af hedder den .color, men det ser ikke ud til at virke. Kan du fortælle mig, hvad jeg gør forkert? Farverne skifter fint, hvis jeg bruger backgroundcolor, så det kan kun være navnet attributen, der er forkert.

function findSel(frm) {
    felt = frm.strOrdre;
    val = felt.value.toLowerCase();
    if (val != "") {
        sel = frm.egne;
        for (i = 0; i < sel.length; i++) {
            if (sel.options[i].value.toLowerCase() == val) {
                felt.style.Color = "#000000";
                sel.selectedIndex = i;
                return;
            }
        }
        felt.style.Color = "#FF0000";
        sel.selectedIndex = 0;
        return;
    }
}

Men du har fortjent dine point, så dem får du under alle omstændigheder.
Avatar billede Slettet bruger
29. december 2002 - 16:02 #5
Det skal skrives med småt. Det er altid en god idé at prøve sådan noget som at ændre case. Men altså:

felt.style.color = "#000000";

Dog synes jeg, det er en god idé at ændre baggrundsfarven, men måske til en lidt mere neutral farve?
Avatar billede sho Nybegynder
29. december 2002 - 17:39 #6
Dooh...jeg var ikke klar over, at java er case sensitiv.. :-)

Tak for hjælpen!
Avatar billede Slettet bruger
30. december 2002 - 11:57 #7
Både Java og JavaScript er case-sensitivt...
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