Gör snygga formulär |
![]() ![]() |
Du har sett det många gånger på Internet bland annat på SupportData.Nets webbplats. Formulär, där du skall fylla i namn eller något annat, föregås av en text som förklarar vad som skall skrivas i formuläret. Det brukar se ut ungefär så här: |
Det här kan göras snyggare du behöver inte ha den förklarande texten framför formuläret. I stället kan du lägga in den i själva formuläret och göra så att den förklarande texten försvinner när besökaren skall skriva in sin egen text. Jag tänker visa två metoder för att göra detta. Den första fungerar i både Netscape och Internet Explorer, men det gör inte den andra. Formuläret fungerar dock i alla fall, även i Netscape. Om du inte vet hur man använder formulär, har du ingen större glädje av det här. Därför kommer jag att visa hur du utnyttjar formulären så att besökarna kan skicka e-post till dig. Netscape och Internet ExplorerSå här ser formulären ut jag har delat upp de båda fälten på två
formulär. De två fälten kan också användas tillsammans i ett enda
formulär. Pröva dem. När du klickar i namnfältet försvinner den text som redan står där. Om du sedan klickar någon annanstans, utan att skriva något i fältet, kommer texten "Skriv ditt namn här" tillbaka. Skriver du in något, kommer din text att stå kvar. Den här metoden fungerar i båda webbläsarna. Meddelandefältet fungerar olika beroende på om du använder Internet Explorer eller Netscape. ![]() I Internet Explorer försvinner texten "Lämna meddelanden här" när du för muspekaren över fältet. Om du flyttar bort muspekaren igen, utan att skriva något, kommer texten tillbaka. I Netscape måste du själv markera den ursprungliga texten och ta bort den. Den här skillnaden mellan de stora webbläsarna behöver man egentligen inte bry sig om. När metoden man har använt inte fungerar, visas meddelandefältet som standard i stället. onFocus, onBlur, onMouseover och onMouseout onFocus onBlur Alla formulärfält måste läggas in mellan FORM-taggar. Inom dessa kan du sedan definiera olika typer av formulärfält. Vi börjar med grundkoden för att skapa de båda fälten ovan i ett gemensamt formulär: |
<FORM> |
Det här ger de båda fälten med texterna inskrivna, men ingenting annat. Det finns ingen kod som säger vad som skall göras med fälten. Raden som börjar <INPUT type="text"...> definierar en enkel textruta med en rad. Den blir 30 tecken lång och innehåller den text som anges i "value". Denna text är rutans "defaultValue", vilket vi snart skall utnyttja. Rutan har ett namn, som vi behöver senare när vi skall göra något vettigt av den. Nästa rad, som börjar med <TEXTAREA...>, ger ett textfält där du kan ange både hur många rader som skall visas (rows) och vilken teckenbredd (cols) rutan skall ha. Textfältet har dessutom ett namn (name) som vi skall använda senare. Allt du skriver in mellan de båda TEXTAREA-taggarna kommer att visas i rutan och är textfältets "defaultValue". Nu ändrar vi koden så att funktionen blir som i de båda exemplen ovan: |
<FORM> |
Likhetstecken: Skilj mellan = och ==
"Lika med" anges i stället med dubbelt likhetstecken - this.value==this.defaultValue betyder "this.value är lika med this.defaultValue". if (this.value==this.defaultValue)
this.value=''; Om this.Value inte är lika med this.defaultValue när fältet aktiveras, händer däremot ingenting. Det du har skrivit in i fältet får stå kvar. if (this.value=='')
this.value=this.defaultValue; Om thisValue däremot innehåller någonting, händer ingenting. Det du har skrivit in i fältet får stå kvar. Händelsehanterarna onFocus och onBlur fungerar i både Netscape och Internet Explorer, medan onMouseOver och onMouseOut i det här faller bara fungerar i Internet Explorer. Skicka e-post med formuläretMen fortfarande händer inget annat med formuläret än att det går att skriva in text i det. Det skall vi ändra på nu, genom att utöka formuläret en del: |
<FORM method="post"
action="mailto:helledal@algonet.se?subject=Jag lär mig JavaScript"
enctype="text/plain"> |
Här blev det mycket på en gång, men det ser värre ut än det är. Det första tillägget ligger i den inledande FORM-taggen. Här talar jag om hur formuläret skall användas: Innehållet skall postas till min e-postadress med texten "Jag lär mig JavaScript" i ämnesraden. När du använder koden på din egen hemsida byter du förstås mot din egen e-postadress och anger ditt eget ämne. Efter <INPUT ...> lade jag till ett <BR> för att få en radbrytning. Jag har gjort likadant med alla textrutorna. Därefter kommer en ny rad med <INPUT ...>. Den har fått namnet "Epost" och defaultValue är "Skriv din epostadress", men för övrigt är den identisk med den första Efter TEXTAREA kommer en ny <INPUT ...> där type="submit", det vill säga skicka. Det ger en knapp som skickar formuläret. Texten på knappen anges i "value". På samma rad har jag fortsatt med ytterligare en <INPUT ...>, den här gången av typen "reset". Det ger en knapp som tömmer textfälten helt och lägger tillbaka deras defaultValue. När besökaren på sidan har skrivit in namn och e-postadress, och kanske fyllt på med ett eller annat meddelande, och sedan klickar på knappen "Skicka!", går ett e-brev i väg till den mottagare som finns angiven i action="mailto". På ämnesraden i brevet står det "Jag lär mig JavaScript". Själva innehållet i brevet, när det kommer fram till mig, kan se ut så här: Namn=Sune Här kommer alltså namnen på de olika fälten in; vi använde "Namn", "Epost" och "Kommentar". Och slutligen: Fyll gärna i det här formuläret och skriv en kommentar. Det är roligt att veta att du orkade läsa så här långt! |
![]() ![]() |
© SupportData.Net |