Avatar billede agertoft Nybegynder
22. december 2004 - 02:10 Der er 27 kommentarer og
1 løsning

Textbox skifter værdi efter ændring af tekst i anden textbox

Jeg har en form, hvorpå man kan indtaste sit postnummer. Så snart man har skrevet postnummeret og skifter fokus til en ny tekstboks, skal der i en tekstbox automatisk skrives byen, som postnummeret tilhører. Det skal altså foregå client-side i form af et Javascript forestiller jeg mig.

Jeg har en tabel i min MySQL database, som indeholder alle postnumre og bynavne. Men hvordan får jeg denne information over i mit javascript, så det hele sker client-side og mens formen bliver udfyldt?

Kan man få et javascript til at lave sådan en forespørgelse i databasen, eller hvordan gøres dette?
Avatar billede olebole Juniormester
22. december 2004 - 02:22 #1
Avatar billede olebole Juniormester
22. december 2004 - 02:25 #2
Skal du hente værdierne i en DB, skal du op og vende på serveren ... typisk ved et side reload. JavaScript kører på klienten og kan ikke umiddelbart arbejde sammen med serveren.
Derfor ligger alle postnumre og byer i et JS-objekt, der er komprimeret så meget som overhovedet muligt, hvilket gør denne løsning langt hurtigere end de array-versioner, jeg ellers har set på nettet  ;o)
Avatar billede agertoft Nybegynder
22. december 2004 - 02:29 #3
Ja, det er netop sådan en løsning, som du har postet, jeg står og mangler. Jeg er ikke så stærk i JavaScript, så kan du prøve at fortælle mig, hvordan man laver den løsning? Og eventuelt sende mig scriptet? :)
Avatar billede olebole Juniormester
22. december 2004 - 02:38 #4
Højreklik på linket ovenfor og væl 'Gem destinationen som ...'.
Gør derefter det samme her:
  http://www.tjenester.dk/x-codes.dk/eksperten/postnumre/dk_pns.js
Så har du de to filer  ;o)
Avatar billede olebole Juniormester
22. december 2004 - 02:39 #5
PS: Det er min egen løsning, så du kan bare kopiere, så meget du vil
Avatar billede agertoft Nybegynder
22. december 2004 - 03:05 #6
Jamen perfekt! Jeg takker mange gange... :)
Avatar billede olebole Juniormester
22. december 2004 - 03:17 #7
... selvtak - og God Jul  *<();o)
Avatar billede olebole Juniormester
22. december 2004 - 03:23 #8
PS: Spørg bare her, hvis du får problemer med at implementere scriptet. Jeg får forhåbentlig en mail.
Jeg opdaterer js-filen engang imellem ... jeg tror, det sidst skete for tre-fire måneder siden. Jeg skal huske at skrive dato for opdateringerne i fremtiden - så kan du jo gemme adressen og kikke ind, hvert halve år og se, om der er opdates  :)
Avatar billede Slettet bruger
22. december 2004 - 12:23 #9
olebole er du god til alt? :-)
Avatar billede olebole Juniormester
22. december 2004 - 14:48 #10
Desværre ... var det bare så vel  :)
Avatar billede olebole Juniormester
22. december 2004 - 14:49 #11
... og dog ... så var der jo ikke mere at lære. Det ville være for kedeligt  ;D
Avatar billede agertoft Nybegynder
22. december 2004 - 21:06 #12
Jeg har lige et lille tillægsspørgsmål :)

Nu har jeg lavet det, og det virker fint - dog er der opstået en mindre irriterende fejl. Når jeg har udfyldt med et postnummer og trykker på TAB for at skifte til næste TextBox i formen, forbliver fokus på TextBoxen med bynavnet. Når man trykker igen på TAB, starter den forfra med øverste TextBox i formen. Det er en mindre fejl, men den er irriterende, hvis man skal bruge formen til rutine-brug...

Ved du hvordan man fikser dette?
Avatar billede agertoft Nybegynder
22. december 2004 - 21:08 #13
Nu sidder jeg og laver det i ASP.NET, og jeg prøvede at skifte de her HTML controls ud med Web Controls og registrere JavaScriptet i min Page_Load og sætte attributter på mine TextBox controls. Men så laver scriptet ged i det. Har nogen styr på, hvordan man få ovenstående løsning til at virke i ASP.NET?
Avatar billede agertoft Nybegynder
22. december 2004 - 21:09 #14
Hvis nogle kommer med svar, der løser de to førnævnte problemer, skal jeg selvfølgelig nok give point for det ;)
Avatar billede agertoft Nybegynder
22. december 2004 - 21:40 #15
Jeg får fejlen:

Error: 'p.value' is null or not an object

Når jeg prøver at overføre scriptet til ASP.NET og har udfyldt den ene TextBox med et gyldigt postnummer.
Avatar billede olebole Juniormester
22. december 2004 - 22:06 #16
Prøv lige at læge et eksempel online, så jeg kan kikke på det  :)
Avatar billede agertoft Nybegynder
22. december 2004 - 23:40 #17
Okay, jeg paster lige det relevante i filerne...

Min aspx fil:

<%@ Page language="c#" Codebehind="Contacts.aspx.cs" AutoEventWireup="false" Inherits="MySQLWeb.WebForm1" buffer="True" ContentType="text/html" ResponseEncoding="iso-8859-1" %>

<asp:TextBox id="TextBox1" name="p" runat="server"></asp:TextBox>
<asp:TextBox id="TextBox2" name="b" runat="server"></asp:TextBox>

Min aspx.cs fil:

protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.TextBox TextBox2;

private void Page_Load(object sender, System.EventArgs e)
{
    string postnummerScript = "<script src='dk_pns.js' type='text/JavaScript'></script>";
    postnummerScript += "<script type='text/JavaScript'>";
    postnummerScript += "function fillPn(form){";
    postnummerScript += "var inx = 'p'+form.p.value;";
    postnummerScript += "if (pn[inx]) {";
    postnummerScript += "form.b.value = pn[inx]; }";
    postnummerScript += "else {";
    postnummerScript += "form.b.value = 'Forkert postnummer';";
    postnummerScript += "form.p.select(); } }";
    postnummerScript += "</script>";

    if (!IsClientScriptBlockRegistered("postnummer"))
    this.RegisterClientScriptBlock("postnummer", postnummerScript);

    TextBox1.Attributes.Add("onBlur", "fillPn(this.form);");
    TextBox2.Attributes.Add("onFocus", "this.blur();");
}

Det er her jeg får fejlen:

Error: 'p.value' is null or not an object
Avatar billede plazm Nybegynder
22. december 2004 - 23:47 #18
TextBox1.Attributes.Add("onBlur", "fillPn(this.form);");

her ligger fejlen højest sandsynligt, uden at kunne være sikker. Du nævner ikk hvilken form det er ? eller det er helt forkert ?
Avatar billede plazm Nybegynder
22. december 2004 - 23:47 #19
Altså jeg mener at this.form er forkert
Avatar billede olebole Juniormester
22. december 2004 - 23:49 #20
... og hvad outputter den til browseren?
Avatar billede agertoft Nybegynder
22. december 2004 - 23:52 #21
Eksemplet hvor den ikke kan finde ud af at TAB'e har jeg lagt op her http://scorekort.dk/agertoft/webform2.aspx

Prøv at TAB'e mellem textboxene... Kan man på én eller anden måde selv styre, hvor den skal TAB'e hen efter hver textbox?
Avatar billede agertoft Nybegynder
22. december 2004 - 23:53 #22
plazm, hvorfor er det forkert? Funktionen fillPn tager en form som parameter...
Avatar billede agertoft Nybegynder
22. december 2004 - 23:57 #23
Eksemplet som jeg gav kode på er det her: http://scorekort.dk/agertoft/contacts.aspx

Der kan I også se, at den TAB'er forkert.
Avatar billede olebole Juniormester
23. december 2004 - 00:34 #24
protected System.Web.UI.WebControls.TextBox p;
protected System.Web.UI.WebControls.TextBox b;

id-attributten rangerer højere end name-attributten. Derfor kan den ikke finde felterne
Avatar billede olebole Juniormester
23. december 2004 - 00:36 #25
nåja ... og:
<asp:TextBox id="p" name="p" runat="server"></asp:TextBox>
<asp:TextBox id="b" name="b" runat="server"></asp:TextBox>
Avatar billede olebole Juniormester
23. december 2004 - 00:37 #26
*LooL* ... og:
    p.Attributes.Add("onBlur", "fillPn(this.form);");
    b.Attributes.Add("onFocus", "this.blur();");

... mon så ikke, vi er ved at være der  *<():D
Avatar billede agertoft Nybegynder
23. december 2004 - 01:03 #27
Jamen dog... :) Jo så virker det. Men jeg har stadig problemet med TAB. Den stopper med at gå videre efter b-textboksen. Så starter den forfra i formen...?
Avatar billede agertoft Nybegynder
23. december 2004 - 01:20 #28
Så fik jeg det til at virke! Tilføjede bare en

postnummerScript += "form.tbPhone.select();}";

til javascriptet. Hvis du svarer i den nye tråd er der lidt point, som mange tak for din hjælp :)
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