När användaren ska beställa, ställa frågor eller ge återkoppling/feedback till en webbtjänst sker det oftast med ett formulär.
7.1 <form>, action och metod
<form action="exempel.se/mapp" method="post">
</form>
<form> attribut:
Det finns 2 attribut i formelelementet.
- action
- Talar om vilken URL som informationen ska skickas till.
- method
- Talar om hur användaren ska mata in data.
Det finns 4 sätt att skicka data på i formulär: GET, HEAD, POST och PUT. Här kommer vi bara använda POST.
POST skickar informationen från formuläret till en server som sedan i sin tur gör något med informationen.
7.2 <input>
För att låta användaren mata in information lägger man till <input type="text">
Denna kod:
- <form action="exempel.se/mapp" method="post">
- <input type="text"
- </form>
ger detta resultatet (Så här kommer webbläsaren att se ut):
7.3 <label for="..."> och <input id="...">
Det blir svårt för användaren att mata in korrekt information utan en etikett vid textfältet.
För att göra detta så kan man skriva:
<label for="first-name">Förnamn:</label>
För att göra formuläret tillgängligt måste man lägga till attributet for="foo" i label-elementet och attributen id="foo" i elementet input.
Det ska vara samma namn i id och for så att label och input sparas ihop. Där foo är namnet som du som utväcklare väljer.
Denna kod:
- <form action="exempel.se/mapp" method="post">
- <label for="first-name">Förnamn:</label>
- <input type="text" id="first-name">
- </form>
ger detta resultatet:
OBS! Id-elementet måste alltid vara unikt varje gång som det används i ett dokument. Till exempel: Om man redan har ett id="first-name" i ett dokument så kan man inte använda first-name i ett annat id-element senare och man måste komma på ett nytt värde för id-elementet istället, till exempel: first-name2. Då är det även rekommenderat att for-elementet också har samma värde som id-elementet senare.
7.4 Alternativ till for och id: lägga <input> nästlad i <label>
Ett alternativt sätt att använda labels och input är att lägga input-elementet inbäddat i label-elementet.
- <form action="exempel.se/mapp" method="post">
- <label>Förnamn:<input type="text"></label>
- </form>
Resultat:
7.5 <input placeholder="...">
Om man vill underlätta för användaren, så kan man lägga en platshållare text med attributet placeholder="bar". Som du ser visas båda alternativen nedan. Att lägga in input i label är lättare om du vill skapa en kompakt och intuitiv layout.
Alternativ 1:
- <form action="exempel.se/mapp" method="post">
- <label for="first-name">Förnamn:</label>
- <input type="text" id="first-name" placeholder="Adam">
- </form>
Resultat:
Alternativ 2:
- <form action="exempel.se/mapp" method="post">
- <label>Förnamn:<input type="text" placeholder="Adam"></label>
- </form>
Resultat:
<input name="...">
För att det ska vara enklare för både servern och användaren att förstå vad informationen innehåller ska man ha med attributet: name="...".
Alternativ 1:
- <form action="exempel.se/mapp" method="post">
- <label for="first-name">Förnamn:</label>
- <input type="text" id="first-name" placeholder="Adam" name="first-name">
- </form>
Resultat:
Alternativ 2:
- <form action="exempel.se/mapp" method="post">
- <label>Förnamn:<input type="text" placeholder="Adam" name="first-name"</label>
- </form>
Resultat:
7.7 Att testa formuläret med httpbin
För att få en uppfattning hur en server skulle ta emot informationen kan vi använda tjänsten httpbin.
Tänk på att i exemplet nedan skickas data i två delar. All data mellan <form> ... </form> skickas för sig.
Exempel 1:
- <h2>Formulär med attributen id och for</h2>
- <form action="https://httpbin.org/post" method="post">
- <label for="first-name">Förnamn:</label>
- <input type="text" id="first-name" placeholder="Adam" name="first-name">
- <label for="age">Ålder:</label>
- <input type="number" id="age" placeholder="0" name="age">
- <button type="sumbit">Skicka</button>
- </form>
Resultat:
Formulär med attributen id och for
Exempel 2:
- <h2>Formulär utan attributen id och for</h2>
- <form action="https://httpbin.org/post" method="post">
- <label>Förnamn:<input type="text" placeholder="Bertil" name="first-name"></label>
- <label>Ålder:<input type="number" placeholder="0" name="age"></label>
- <button type="submit">Skicka</button>
- </form>
Resultat:
Formulär utan attributen id och for
7.8 <input type="number"> och <button type="submit">