Anasayfa / HTML / HTML Form Elemanları: Web Sitelerinde Kullanıcılarla Etkileşime Geçme Rehberi

HTML Form Elemanları: Web Sitelerinde Kullanıcılarla Etkileşime Geçme Rehberi

Bir web sitesinin ziyaretçileriyle iletişim kurabilmesi, onlardan bilgi alabilmesi ve bu bilgileri işleyebilmesi için en kritik yapı taşları “Formlar”dır. Arama motorlarında yaptığınız bir arama, e-ticaret sitelerindeki üye kayıt ekranları, iletişim sayfalarındaki mesaj kutuları veya bir ankete verdiğiniz cevapların tamamı arka planda HTML Form Elemanları kullanılarak oluşturulur.

Daha önceki rehberlerimizde metinleri, görselleri ve tabloları nasıl göstereceğinizi öğrendiniz. Şimdi ise ziyaretçiden nasıl veri alacağınızı en ince ayrıntısına kadar, bol örneklerle ve modern web (HTML5) standartlarına uygun olarak öğreneceksiniz.

1. Formların Temeli: <form> Etiketi

Tıpkı bir tablonun <table> etiketiyle başlaması gibi, bir form da her zaman <form> etiketiyle sarmalanmak zorundadır. Bu etiket, tarayıcıya “Bu alanın içindeki tüm kutucuklar, butonlar ve seçimler birbiriyle ilişkilidir ve kullanıcının girdiği verileri temsil eder” mesajını verir.

<form> etiketi kendi başına ekranda görünmez, ancak verinin nereye ve nasıl gönderileceğini belirleyen iki hayati niteliğe (attribute) sahiptir:

  • action: Kullanıcı “Gönder” butonuna bastığında, toplanan verilerin işlenmek üzere gönderileceği web adresini (URL) veya sunucu dosyasını (örneğin: kayit.php) belirtir.
  • method: Verilerin sunucuya hangi yöntemle gönderileceğini belirler. En yaygın iki değer GET ve POST‘tur.
    • GET: Verileri URL’nin sonuna ekleyerek gönderir (Örneğin Google aramaları). Şifre gibi gizli bilgiler için asla kullanılmaz.
    • POST: Verileri arka planda (görünmez olarak) gönderir. Güvenli veri gönderimi ve büyük boyutlu içerikler için kullanılır.

Temel Form İskeleti Örneği:

<form action="iletisim-islem.php" method="POST">
    <!-- Form kutucukları ve butonlar bu araya gelecek -->
</form>

2. Veri Girişinin Kalbi: <input> Etiketi

HTML’deki en güçlü, en esnek ve en karmaşık etiketlerden biri <input> etiketidir. Bu etiket boş (void) bir elementtir, yani kapanış etiketi (</input>) yoktur. <input> etiketinin ne tür bir kutucuğa dönüşeceğini tamamen type (tür) niteliği belirler.

  • type="text": Standart, tek satırlık bir metin giriş kutusu oluşturur. Ad, soyad gibi veriler için kullanılır.
  • type="password": Girilen karakterleri ekranda gizleyen (genellikle yıldız veya nokta şeklinde gösteren) bir şifre kutusu oluşturur.
  • type="checkbox": Kullanıcının birden fazla seçenek işaretleyebileceği onay kutuları (kare) oluşturur.
  • type="radio": Kullanıcının sadece tek bir seçim yapabileceği yuvarlak butonlar oluşturur. Cinsiyet seçimi veya “Evet/Hayır” soruları için idealdir. (Aynı gruba ait radyo butonlarının name nitelikleri tamamen aynı olmalıdır ki tarayıcı bunlardan sadece birinin seçilmesine izin versin).

Örnek Kullanım:

<input type="text" name="kullanici_adi" id="kullanici_adi">
<input type="password" name="sifre" id="sifre">
<input type="radio" name="cinsiyet" value="kadin"> Kadın
<input type="radio" name="cinsiyet" value="erkek"> Erkek

3. Erişilebilirlik ve SEO İçin Olmazsa Olmaz: <label> Etiketi

Bir kutucuğun yanına sadece düz metin yazıp geçmek (Örneğin: Adınız: <input type="text">), modern web tasarımında yapılan en büyük hatalardan biridir. Bunun yerine, o kutucuğun ne işe yaradığını açıklayan metni <label> (etiket) içerisine almanız gerekir.

<label> kullanımının en büyük avantajı erişilebilirliktir. Görme engelli bireylerin kullandığı ekran okuyucu cihazlar (screen readers), formu okurken <label> ile <input> arasındaki bağı kurarak kullanıcıya o kutuya ne girmesi gerektiğini sesli olarak söyler. Ayrıca, örneğin telefonda küçük bir onay kutusuna (checkbox) dokunmak zor olabilir; ancak <label> kullanırsanız, kullanıcı doğrudan yazının üzerine tıkladığında da kutucuk işaretlenir.

Bu bağlantıyı kurmak için <label> etiketinin for niteliği ile <input> etiketinin id niteliği tamamen aynı kelime olmalıdır.

Doğru (Erişilebilir) Kullanım Örneği:

<label for="eposta_adresi">E-posta Adresiniz:</label>
<input type="text" name="eposta" id="eposta_adresi">

4. Uzun Metinler İçin: <textarea> Etiketi

Eğer kullanıcıdan bir ürün incelemesi, bir iletişim mesajı veya bir blog yorumu gibi uzun ve birden fazla satırdan oluşan bir metin alacaksanız <input type="text"> yetersiz kalır. Bu durumda <textarea> etiketi kullanılır. <input> etiketinin aksine boş bir element değildir; açılış ve kapanış etiketleri arasına yazılan metinler, kutunun varsayılan değeri olur. Boyutunu belirlemek için rows (satır sayısı) ve cols (sütun genişliği) nitelikleri kullanılır.

<label for="mesaj">Mesajınız:</label>
<textarea id="mesaj" name="kullanici_mesaji" rows="5" cols="40">
Buraya mesajınızı yazabilirsiniz...
</textarea>

5. Açılır Menüler (Dropdowns): <select> ve <option>

Kullanıcıya onlarca seçenek sunmanız gerektiğinde (örneğin doğduğu yılı veya şehri seçmesi) sayfayı radyo butonlarıyla doldurmak korkunç bir tasarım olur. Bunun yerine yer tasarrufu sağlayan açılır menüler oluştururuz. Menünün ana çerçevesi <select>, içindeki her bir seçilebilir satır ise <option> etiketiyle kurgulanır.

<label for="sehir">Yaşadığınız Şehir:</label>
<select name="sehirler" id="sehir">
    <option value="34">İstanbul</option>
    <option value="06">Ankara</option>
    <option value="35">İzmir</option>
</select>

6. Form Elemanlarını Gruplama: <fieldset> ve <legend>

Çok uzun formlarda (örneğin kargo adresi ve fatura adresi gibi farklı bölümleri olan formlarda), ilgili elemanları görsel ve anlamsal olarak gruplamak gerekir. <fieldset> etiketi ilgili form elemanlarını ince bir sınır çizgisi (kutu) içine alır. <legend> etiketi ise bu çizginin üzerine bir başlık/açıklama yerleştirir. Bu yapı, formun düzenli görünmesini sağlarken, ekran okuyucu kullanan engelli bireyler için de devasa bir kolaylık sunar.

<fieldset>
    <legend>Kişisel Bilgiler</legend>
    <label for="ad">Adınız:</label>
    <input type="text" id="ad" name="ad"><br>

    <label for="soyad">Soyadınız:</label>
    <input type="text" id="soyad" name="soyad">
</fieldset>

7. HTML5 İle Gelen Modern Form Özellikleri (Sihirli Dokunuşlar)

HTML5, formlara inanılmaz güçler katarak web geliştiricilerini yüzlerce satır karmaşık JavaScript kodundan kurtardı. İşte mutlaka kullanmanız gereken modern HTML5 form yenilikleri:

  • Yeni Input Türleri (Types): HTML5 ile birlikte email, url, tel, number, range (kaydırma çubuğu), date (takvim), color (renk seçici) gibi yeni türler geldi. Bunların en büyük faydası, özellikle cep telefonlarında doğru klavyenin (örneğin e-posta alanında “@” işaretli klavye veya sayı alanında rakam klavyesi) otomatik olarak açılmasını sağlamasıdır.
  • placeholder (Yer Tutucu): Kullanıcı kutuya tıklayıp yazmaya başlayana kadar kutunun içinde soluk renkte görünen ipucu metinleridir. (Örnek: placeholder="[email protected]").
  • required (Zorunlu Alan): Bir kutucuğa bu niteliği eklerseniz, o alan doldurulmadan formun gönderilmesine tarayıcı otomatik olarak izin vermez ve uyarı çıkarır. JavaScript kullanmadan doğrulama yapmanın en kolay yoludur.
  • <datalist> Etiketi: Hem bir metin giriş kutusu (text) hem de bir açılır menü (select) özelliğini birleştirir. Kullanıcı yazmaya başladığında altta otomatik tamamlama önerileri (autocomplete) çıkarır.
  • autofocus: Sayfa yüklendiğinde, farenin imlecinin (imleç odaklamasının) otomatik olarak belirlediğiniz kutucukta hazır beklemesini sağlar.

Modern HTML5 Form Örneği:

<form action="/kayit" method="POST">
    <label for="eposta">E-posta (Zorunlu):</label>
    <input type="email" id="eposta" name="kullanici_eposta" required placeholder="[email protected]" autofocus>
    <br><br>

    <label for="tarayici">Favori Tarayıcınız:</label>
    <input list="tarayicilar" id="tarayici" name="tarayici">
    <datalist id="tarayicilar">
        <option value="Chrome">
        <option value="Firefox">
        <option value="Safari">
        <option value="Edge">
    </datalist>
    <br><br>

    <!-- Formu Gönderen Buton -->
    <button type="submit">Kayıt Ol</button>
</form>

Not: Formları sunucuya iletmek için her formun sonunda mutlaka bir <button type="submit"> veya <input type="submit"> (Gönder butonu) bulunmalıdır.

Özet ve SEO/Performans İpuçları

Başarılı bir web geliştiricisi olmak, sadece ekranda güzel görünen değil, arka planda doğru kurgulanmış formlar yapmaktan geçer. Her <input> için benzersiz bir id ve sunucuya veri yollarken tanınmasını sağlayacak bir name niteliği girmeyi asla unutmayın. Kutucukları hiçbir zaman desteksiz (yalnız) bırakmayın, mutlaka for niteliği barındıran bir <label> ile eşleştirin. HTML5’in sunduğu type="email" veya required gibi anlamsal (semantik) ve yerleşik özellikleri kullanarak sayfalarınızı hafifletin, hızlandırın ve tüm cihazlarda (bilgisayar, tablet, ekran okuyucu vb.) herkesin kullanabileceği sorunsuz bir deneyime (UX) dönüştürün!

Etiketlendi:

Bir Yorum

Cevap bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir