Avatar billede tingholm Mester
20. oktober 2011 - 21:55 Der er 13 kommentarer og
1 løsning

knap til variabel link

Hej Eksperter

Jeg har tidligere fået hjælp til at lave en tekstboks og knap der sender brugeren til www.minurl.dk/tekstboks

[quote]<input type="text" id="url" name="url">
<button onclick="window.location.href="www.minurl.dk/"+document.getElementById('url').value">GO GO GO</button>[/quote]

Nu vil jeg gerne forfine den lidt.
I en alm <form> kan brugeren taste 'enter' for submit, kan dette ikke implementeres på ovenstående script?

MEd en form, kan jeg sætte fokus i tekstfeltet allerede når brugeren loader siden:
<body onload="document.formname.url.focus();">
Jeg har prøvet at putte <input> i en <div id="form"> men uden held, det må da også kunne tilpasses?
Avatar billede tingholm Mester
20. oktober 2011 - 21:59 #1
Hov glemte lige endnu en ting der driller vedr denne:

Der er tilsyneladende noget med tegnsættet, når jeg skriver "århus" i tekstfeltet, bliver jeg helt korrekt sendt til www.minurl.dk/århus Men når jeg fanger hvad der står efter www.minurl.dk/ i min kode får jeg "Ã¥rhus"
Er der noget tegnsæt jeg skal angive et sted??
Avatar billede olebole Juniormester
20. oktober 2011 - 22:29 #2
<ole>

Hvad er det, du spørger om?

/mvh
</bole>
Avatar billede tingholm Mester
21. oktober 2011 - 06:24 #3
1: kan jeg lave så enter-tasten virker til min knap som ikke er 'submit' i en form
2: kan jeg lave så markøren står i feltet allerede når siden loades
3: bruges der samme tegnsæt i URL som når jeg henter variablen i $_GET[]
Avatar billede tingholm Mester
21. oktober 2011 - 22:28 #4
Løsning på punkt 3: utf8_decode() på den GET variabel jeg flytter alt efter domain.dk/ over i... Den havde så heller ikke noget med JS at gøre, så håber nogen kan hjælpe med punkt 1 og 2...
Avatar billede olebole Juniormester
21. oktober 2011 - 22:54 #5
Skal ENTER virke i hele dokumentet - så man f.eks. ikke kan bruge den til noget i et TEXTAREA? Hvis ikke, hvor skal den så virke?

I bunden af siden kan du skrive:


<script type="text/javascript">
document.getElementById("feltets_id").focus();
</script>


Nej, at bruge utf8_decode() i den forbindelse er helt misforstået. Du tramper bare på termometeret, så du ikke kan se, at patienten stadig er syg.

Løsningen er at få styr på dit tegnsæt. Du skal:

1) bruge en utf-8 meta i alle HTML dokumenter
2) gemme alle dokumenter som utf-8
3) sætte evt. database op som utf-8
4) sørge for alle dokumenter, der leverer data til DB og/eller dokumenter opfylde #1 og #2

Så har du ikke problemer med specialtegn. I den aktuelle situation er det nok at tage sig af #1 og #2 - men bruger du database, er #3 og #4 også vigtige
Avatar billede olebole Juniormester
21. oktober 2011 - 22:58 #6
- og så bør du faktisk encode variablen:


<button onclick="window.location.href="www.minurl.dk/"+encodeURIComponent(document.getElementById('url').value)">GO GO GO</button>

Avatar billede tingholm Mester
22. oktober 2011 - 11:37 #7
ad 1: Entertasten skal bare virke når man står i tekstfeltet...
ad 2: focus() virker perfekt, tak for det :)
ad 3: Hele idéen med al det her er at brugeren skal kunne skrive www.domæne.dk/århus i URL og dermed få vist en søgning på århus. Derfor kan jeg ikke antage at den er encodet, da det ikke nødvendigvis er min søgefunktion der sender brugeren derhen...
Avatar billede olebole Juniormester
22. oktober 2011 - 14:16 #8
Løsningen er:


<script type="text/javascript">
function doSubmit() {
    window.location.href = "www.minurl.dk/"+encodeURIComponent(document.getElementById('url').value);
}
function kDown(evnt) {
    if (evnt.keyCode==13) {
        doSubmit();
        evnt.cancelBubble = true;
        evnt.returnValue = false;
        if (evnt.stopPropagation) evnt.stopPropagation();
        if (evnt.preventDefault) evnt.preventDefault();
    }
}
</script>

<input onkeydown="kDown(event)" type="text" id="url" name="url">
<button onclick="doSubmit()">GO GO GO</button>



Hvad angår #3 ovenfor, så har du misforstået noget. Specialtegn i URL'er skal encodes! Sådan er teknologien indrettet.

Da teknologien er indrettet på dette, giver det da heller ingen problemer - men det forudsætter naturligvis, at du har styr på trivialiteter som f.eks. tegnsæt. Kik på URL'er i professionelle løsninger overalt på nettet, og du vil se, at alle specialtegn er encoded.

Der ikke stå århus i en URL. Der skal stå %C3%A5rhus  =)
Avatar billede tingholm Mester
22. oktober 2011 - 15:26 #9
hmm... er der noget galt i bare at bruge dette?
<input type="text" onkeydown="if (event.keyCode == 13) document.getElementById('search').click()">

Her er et par eksempler:
http://findvej.dk/åbyvej,åbyhøj
http://www.svøm.dk/

At de gør det, gør det jo ikke nødvendigvis korrekt. Men en mulighed er det da.

Jeg vil gerne have det muligt at søge på min side, allerede mens man skriver URL, altså i stedet for at gå ind på domain.dk og skrive århus i søgefeltet, så vil jeg gøre det muligt at skrive www.domain.dk/århus som url... og ingen bruger i verden vil da skrive www.domain.dk/%C3%A5rhus
Avatar billede tingholm Mester
22. oktober 2011 - 15:27 #10
hmm... eksperten's url genkender, bryder sig åbenbart ikke om komma i en url... You get the picture ;)
Avatar billede tingholm Mester
22. oktober 2011 - 15:45 #11
Olebole, tak for hjælpen med endnu et problem (du har vist hjulpet mig et par gange før) Smider du et svar for points?

Så må jeg lige se om ÆØÅ i links virker selv om jeg kun kan forestille mig at det ikke er 'best practise'
Avatar billede olebole Juniormester
22. oktober 2011 - 15:50 #12
Ja, det er lidt noget 'snavs' - og derudover bør du have så lidt uvedkommende i din markup, som muligt.

Du forstår stadig ikke begrebet URL'er. Naturligvis vil ingen finde på at skrive en ecoded URL. Netop derfor skal din kode encode URL'en. Når din bruger skriver 'århus', vil scriptet foretage den nødvendige encoding.

http://www.svøm.dk er en helt anden problematik. Det skyldes noget teknik, som blev indført for forholdsvis nylig - men det gælder kun domæner.

findvej.dk er skrevet af en hobbykoder, så den løsning er ikke nødvendigvis noget, du skal se som et forbillede.

Nej, folk skal ikke kunne skrive 'århus' i adresselinjen, da det strider mod teknologiens regler og på sigt vil skabe andre problemer for dig. Det er muligt, du ikke kan overskue det på nuværende tidspunkt, men sådan er det. Om du vil tage imod råd fra en erfaren udvikler eller insistere på en dårlig løsning, må så være op til dig  =)
Avatar billede olebole Juniormester
22. oktober 2011 - 16:03 #13
Ellers tak, jeg samler ikke points. Læg selv et svar og accepter det, så tråden lukkes  =)

Æ, Ø og Å kan i mange tilfælde godt bruges uden encoding, men de vil overvejende sandsynligt give problemer i det lange løb. Det er ikke et spørgsmål om 'best practise'. Der er tale om at bruge en invalid (=ugyldig og ofte ubrugelig) fremgangsmåde - eller at bruge den korrekte og brugbare  *o)
Avatar billede tingholm Mester
21. november 2011 - 19:21 #14
lukkes
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