Avatar billede encorez Nybegynder
24. oktober 2006 - 21:51 Der er 14 kommentarer og
2 løsninger

Autofocus og OnFocus

Eller hvad det nu hedder....

Jeg har et felt i en formular, lad os kalde det TEST. Jeg har to opgaver der griber ind i hinanden, så jeg håber det kan lade sige gøre.

<input name="searchquery" value="<?=$searchquery?>" type="text" />
1. Når siden loader, og cursoren stille sig automatisk i feltet, hvis det er tomt.

2. Hvis jeg har brugt feltet før ved en søgning, så skal teksten stadig stå der (value=....). Men når man så klikke i felten, skal den slette det der står i felten, så det bliver tomt og man kan skrive noget nyt.

Kan det lade sig gøre og hvad er koden. Jeg er okay til php men er en dør til java script.

Mvh. Simon
Avatar billede thesurfer Nybegynder
24. oktober 2006 - 23:20 #1
Auto-fokus:
<body onload="if (document.TEST.searchquery.value=='') document.TEST.searchquery.focus()">


Fokus ved klik:
<input name="searchquery" value="<?=$searchquery?>" type="text" onfocus="if (this.value != '') this.value == '';" />

PS: Det burde virke, men er ikke testet..
Avatar billede thesurfer Nybegynder
24. oktober 2006 - 23:21 #2
Rettelse:

onfocus="this.value == '';"

Der er ingen grund til at undersøge, om feltet er tomt..
Avatar billede thesurfer Nybegynder
24. oktober 2006 - 23:21 #3
Doh.. endnu en rettelse :-)

onfocus="this.value = '';"
Avatar billede jhe-ting Nybegynder
25. oktober 2006 - 06:07 #4
Jeg har lavet et eksempel hvor feltet ikke bliver slettet når det vælges, men derimod markeres hele indholdet, så det kan overskrives.
Der er også et felt der bliver slettet, hvis det bare SKAL være på den måde :-)

<HTML>
<HEAD>
  <TITLE>autoSelect demo</TITLE>
</HEAD>
<BODY onload="TEST.searchquery.focus();">
  <h3>AutoSelect demo</h3>
  <FORM ID=TEST>
    <p>Automatisk selecteret felt: (indholdet kan overskrives)<br>
    <input name="searchquery" value="Sidste indtastning" type="text" onfocus="select()"/>
    <p><br>Automatisk slettet felt: (indholdet slettes når det vælges)<br>
    <input type=text value=test name=test onfocus="value=''"/>
    <p><br>Normalt felt: (til sammenligning)<br><input type=text value=normal name=norm />
  </FORM>
</BODY>
</HTML>
Avatar billede olebole Juniormester
25. oktober 2006 - 14:59 #5
<ole>

Noget af din kode kunne tyde på, du bruger XHTML. Gør du det, skal der scriptes helt anderledes - da du jo i så fald scripter mod en XML-DOM ... ikke en HTML-DOM  ;o)

/mvh
</bole>
Avatar billede encorez Nybegynder
25. oktober 2006 - 20:10 #6
For det første så tak for de rigtig gode inputs.

Thesurfer -> bortset fra at jeg skulle fjerne document. og at jeg ikke helt kunne finde ud af dine rettelser ;)  så tror jeg faktisk du har givet mig det jeg har bedt om.

Men jhe-ting's ene løsning med at feltet bliver markeret automatisk onfocus, syntes jeg faktisk passede bedre til mit behov, så den bruger jeg.

Så endnu engang tak til jer begge :)
Avatar billede thesurfer Nybegynder
25. oktober 2006 - 20:24 #7
encorez> Hvorfor skulle du fjerne ".document"? "Form" ligger jo på "document"..
Avatar billede thesurfer Nybegynder
25. oktober 2006 - 20:24 #8
Rettelse: "document." og ikke ".document"..
Avatar billede thesurfer Nybegynder
25. oktober 2006 - 20:27 #9
Hmm.. jeg mente ellers at mine rettelser var lige til.. erstat onfocus med det nye..

Men jeg kender det godt.. når man selv ved det, virker det jo bare logisk.. :-)
Avatar billede encorez Nybegynder
25. oktober 2006 - 20:31 #10
jeg ved ikke hvorfor, men jeg kunne se at jhe-ting ikke brugte document. i body'en så jeg prøvede at fjerne det og så virkede det. Hvis jeg gør som du skriver får jeg fejlen: "'document.TEST.searchquery' is null or not an object"
Avatar billede thesurfer Nybegynder
25. oktober 2006 - 20:59 #11
Havde din side disse tags (som minimum), da du testede min kode?:

<html>
<head>
<title>siden titel her</title>
</head>
<body>

formen skulle så være her.. i body området..

</body>
</html>
Avatar billede encorez Nybegynder
25. oktober 2006 - 21:20 #12
ja.
Hvis du skriver din kode fuldt ud (indkluderet rettelserne ;)  )  så vil jeg da gerne lige afprøve den igen.
Avatar billede thesurfer Nybegynder
25. oktober 2006 - 21:32 #13
Ang "Jeg har et felt i en formular, lad os kalde det TEST":
Jeg går ud fra, at det er formularen der hedder "TEST" (med store bogstaver) ?

Feltet hedder jo "searchquery"..
Avatar billede encorez Nybegynder
25. oktober 2006 - 21:38 #14
yes, det er korret. Igen jeg er ikke en haj til javascript, så jeg ved ikke hvad der gør forskellen som sagt. Men der er i princippet ikke meget forskel på hvad du gør i body og hvad jhe-ting gør, bortset han ikke bruger document.

Måske skulle vi spørge JHE-TING hvis han følger med stadig, hvorfor han ikke bruger document. Der er vel en grund til han mener det ikke skal bruges (eller HUN for den sags skyld, vi skal jo ikke fornærme nogen)
Avatar billede thesurfer Nybegynder
25. oktober 2006 - 21:59 #15
Eksempel:

<html>
<head>
<title>siden titel her</title>
</head>
<body onload="if (document.TEST.searchquery.value=='') document.TEST.searchquery.focus()">
<form name="TEST">
<input name="searchquery" value="<?=$searchquery?>" type="text" onfocus="this.value = '';" />
</form>
<body>
</html>

Ovenstående kode virker i browserene: Opera v9, Mozilla Firefox v1.5, Internet Explorer v6 SP2.

Hvis du bruger en almindelig HTML (.htm eller .html, dvs ikke .php osv) fil, vil koden "<?=$searchquery?>" ikke blive afviklet, og der vil derfor komme til at stå "<?=$searchquery?>" i feltet. Det betyder at feltet ikke får fokus, da det ikke er tomt. Hvilket igen er hvad du bad om..
Avatar billede thesurfer Nybegynder
25. oktober 2006 - 22:02 #16
Rettelse (sidste "<body>" skulle være "</body>"):
-------------------------------------------------

Eksempel:

<html>
<head>
<title>siden titel her</title>
</head>
<body onload="if (document.TEST.searchquery.value=='') document.TEST.searchquery.focus()">
<form name="TEST">
<input name="searchquery" value="<?=$searchquery?>" type="text" onfocus="this.value = '';" />
</form>
</body>
</html>

Ovenstående kode virker i browserene: Opera v9, Mozilla Firefox v1.5, Internet Explorer v6 SP2.

Hvis du bruger en almindelig HTML (.htm eller .html, dvs ikke .php osv) fil, vil koden "<?=$searchquery?>" ikke blive afviklet, og der vil derfor komme til at stå "<?=$searchquery?>" i feltet. Det betyder at feltet ikke får fokus, da det ikke er tomt. Hvilket igen er hvad du bad om..
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