` gibi) metin içeriğini (`.textContent` veya `.innerHTML` kullanarak) değiştirebiliriz.
Olay Dinleyicileri (Event Listeners): Kullanıcı Etkileşimini Yakalama
Anket formumuzun etkileşimli olmasını sağlayan temel mekanizma
Olay Dinleyicileridir. Bu, JavaScript'in belirli bir HTML elemanı üzerinde gerçekleşen olayları (örneğin tıklama, metin girişi, form gönderimi) "dinlemesini" ve bir olay tetiklendiğinde belirli bir fonksiyonu çalıştırmasını sağlar.
*
Form Gönderimini Yakalama: Anket formumuzdaki en önemli olay, kullanıcının formu göndermek için butona tıklamasıdır. Formun kendisi üzerinde bir `submit` olay dinleyicisi ekleyerek, kullanıcının butona bastığı anda bir JavaScript fonksiyonunun devreye girmesini sağlarız. Bu fonksiyon, varsayılan form gönderme davranışını (sayfanın yenilenmesini) engellemeli ve kendi veri işleme mantığımızı çalıştırmalıdır.
*
Diğer Olaylar: Daha gelişmiş anketlerde, bir radyo butonu seçildiğinde farklı bir soru grubunu göstermek gibi senaryolar için `change` olay dinleyicileri veya özel butonlar için `click` olay dinleyicileri kullanılabilir.
Veri Toplama ve Saklama
Kullanıcı formu gönderdiğinde, `submit` olay dinleyicisi aracılığıyla tetiklenen fonksiyon, formdaki tüm input elemanlarından verileri toplamalıdır.
*
Verileri Okuma: Her bir form elemanının `id`'sini kullanarak veya `name` niteliği üzerinden erişerek değerlerini tek tek okuruz. Radyo butonları için, aynı `name`'e sahip butonlar arasından `.checked` olanı bulup onun `value`'sunu alırız. Checkbox'lar için ise, seçili olanların `value`'larını bir diziye toplarız.
*
Veri Yapısı: Toplanan verileri okunabilir ve işlenebilir bir formatta saklamak için genellikle bir JavaScript objesi kullanırız. Objenin anahtarları soru başlıkları veya input `name` nitelikleri olabilirken, değerleri kullanıcı cevapları olacaktır. Örneğin: `{ soru1: "cevap1", soru2: ["cevapA", "cevapB"] }`.
Form Doğrulama (Validation): Kullanıcıdan Geçerli Veri Alma
Kullanıcının anketi tam ve doğru bir şekilde doldurduğundan emin olmak için
Form Doğrulama vazgeçilmezdir. Bu, kötü veya eksik verilerin işlenmesini önler ve genel
Kullanıcı Deneyimini iyileştirir.
*
Temel Doğrulama Kuralları:*
Boş Alan Kontrolü: Zorunlu alanların doldurulup doldurulmadığını kontrol ederiz.
*
Format Kontrolü: E-posta adresi gibi belirli format gerektiren alanların doğru formatta girilip girilmediğini basit düzenli ifadeler (regular expressions) kullanarak veya HTML5'in `type="email"` niteliğinin sağladığı temel kontrolleri kullanarak kontrol ederiz.
*
Minimum/Maksimum Uzunluk: Metin alanları için belirli bir karakter sınırlaması belirleyebiliriz.
*
Seçim Kontrolü: Radyo butonları veya onay kutusu grupları için en az bir seçeneğin seçildiğinden emin oluruz.
*
Geri Bildirim: Doğrulama başarısız olduğunda, kullanıcıya hangi alanların yanlış veya eksik olduğunu belirten açık ve anlaşılır mesajlar göstermek çok önemlidir. Bu mesajları ilgili input elemanının yanında veya formun üst kısmında bir alanda görüntüleyebiliriz.
Bu adımlar, anket formumuzun dinamik ve etkileşimli olmasını sağlayan Vanilla JavaScript çekirdeğini oluşturur. Kod blokları yerine bu kavramsal açıklamalar, temel mantığı anlamanız için yeterli olacaktır.
Stiller: CSS ile Görselleştirme (Kısa Bir Bakış)
Anket formumuzun HTML yapısı ve JavaScript mantığı hazır olduğunda, kullanıcıların formu rahatça kullanabilmesi ve estetik bir görünüme sahip olması için CSS devreye girer. CSS, form elemanlarının renklerini, boyutlarını, hizalamasını, yazı tiplerini ve genel düzenini belirler. Her ne kadar bu makale JavaScript odaklı olsa da, CSS'in önemini vurgulamakta fayda var.
*
Düzen ve Hizalama: Flexbox veya Grid gibi CSS özelliklerini kullanarak form elemanlarını düzenli bir şekilde hizalayabilir, responsive bir görünüm sağlayabiliriz.
*
Renkler ve Yazı Tipleri: Markanıza veya web sitenizin temasına uygun renkler ve yazı tipleri seçerek formun görsel çekiciliğini artırırız.
*
Input Stilleri: Giriş alanlarına odaklanıldığında veya üzerine gelindiğinde farklı stiller uygulayarak
Kullanıcı Deneyimini zenginleştirebiliriz.
*
Hata Mesajları: Doğrulama hatalarını gösteren metinleri kırmızı renkte veya belirgin bir arka planla vurgulayarak kullanıcının dikkatini çekebiliriz.
CSS ile anket formunuzu nasıl daha çekici hale getirebileceğinizi öğrenmek için [/makale.php?sayfa=css-ile-responsive-tasarimlar] makalemize göz atabilirsiniz. Estetik bir tasarım, kullanıcının anketinizi tamamlama olasılığını artıracaktır.
Veri İşleme ve Gönderme (İleri Bakış)
Anket verilerini başarıyla topladıktan ve doğruladıktan sonraki adım, bu verileri ne yapacağımızdır.
Basit Anket Formu bağlamında, verileri genellikle bir yere kaydetmek veya daha fazla analiz için bir sunucuya göndermek isteriz.
*
Sunucuya Gönderme: En yaygın senaryo, toplanan verileri bir sunucuya göndermektir. Bu işlem, genellikle AJAX (Asynchronous JavaScript and XML) veya daha modern olan Fetch API kullanılarak yapılır. JavaScript ile bir HTTP isteği oluşturulur (genellikle POST metoduyla), toplanan anket verileri bu isteğin gövdesinde (JSON formatında yaygın olarak) sunucuya gönderilir. Sunucu tarafında (Node.js, PHP, Python vb. dillerle yazılmış bir backend) bu veriler alınır, işlenir (örneğin bir veritabanına kaydedilir) ve bir cevap döndürülür.
*
Yerel Saklama (Local Storage): Çok basit anketler veya sadece kullanıcı tarafında tutulması gereken veriler için `localStorage` veya `sessionStorage` gibi tarayıcının sunduğu depolama mekanizmalarını kullanabiliriz. Ancak bu yöntem, tarayıcı tabanlıdır ve büyük ölçekli veya güvenliği kritik veriler için uygun değildir.
*
Teşekkür Mesajı: Veriler başarıyla işlendikten sonra, kullanıcıya bir teşekkür mesajı göstermek veya onları farklı bir sayfaya yönlendirmek iyi bir uygulamadır. Bu, kullanıcıya anketin tamamlandığına dair geri bildirim sağlar.
Bu adımlar, basit anket formunuzun sadece istemci tarafında çalışmakla kalmayıp, toplanan verilerden gerçek anlamda faydalanabilmesini sağlar.
Geliştirmeler ve İleri Adımlar
Vanilla JavaScript ile temel bir anket formu oluşturmak,
Web Geliştirme yolculuğunuzda önemli bir adımdır. Ancak projenizi daha da geliştirebileceğiniz birçok yol vardır:
*
Dinamik Soru Yükleme: Soruları HTML'ye statik olarak yazmak yerine, bir JSON dosyasından veya API'den dinamik olarak yükleyebilirsiniz. Bu, anketin sorularını kolayca değiştirebilmenizi veya farklı anketler oluşturabilmenizi sağlar.
*
İlerleme Çubuğu: Kullanıcının ankette nerede olduğunu gösteren bir ilerleme çubuğu eklemek,
Kullanıcı Deneyimini iyileştirir ve anketin tamamlanma oranını artırabilir.
*
Koşullu Mantık: Kullanıcının önceki cevabına göre sonraki soruların değişmesi (örneğin, "Evet" cevabı verenlere ek sorular sormak) anketinizi daha akıllı hale getirir.
*
Erişilebilirlik (Accessibility): Ekran okuyucularını kullanan kişiler için `aria` etiketleri ve klavye navigasyonu gibi erişilebilirlik özelliklerini eklemek, anketinizin daha geniş bir kitle tarafından kullanılabilir olmasını sağlar.
*
Test Etme: Anketinizi farklı tarayıcılarda ve cihazlarda test etmek, olası hataları bulmanıza ve kullanıcılar için sorunsuz bir deneyim sağlamanıza yardımcı olur.
Bu geliştirmeler, basit anketinizi daha profesyonel ve işlevsel bir araca dönüştürecektir.
Sonuç
Bu makalede, sıfırdan başlayarak
Vanilla JavaScript kullanarak basit bir anket formu oluşturmanın temel prensiplerini inceledik. HTML ile iskeleti kurmaktan, JavaScript ile etkileşim, veri toplama ve doğrulama mantığını oluşturmaya kadar birçok konuya değindik. Kod blokları yerine kavramsal açıklamalarla, temel
Web Geliştirme becerilerinizi güçlendirmenize odaklandık.
Unutmayın ki, temel Vanilla JavaScript bilgisi, framework'lere veya kütüphanelere bağımlı kalmadan interaktif ve işlevsel web uygulamaları geliştirmeniz için size güçlü bir temel sağlar. Bu
Basit Anket Formu projesi, öğrendiklerinizi pekiştirmenin ve daha karmaşık projeler için kendinizi hazırlamanın harika bir yoludur. Deney yapmaktan, hatalar yapmaktan ve her adımda öğrenmekten çekinmeyin. Başarılar dileriz!
Yazar: Serkan Çelik
Ben Serkan Çelik, bir Dijital Pazarlama Uzmanı. Platformumuzda teknolojiyi herkes için anlaşılır kılmak, karmaşık konuları basitleştirerek okuyucularımızın günlük yaşamında pratik olarak kullanabileceği bilgiler sunmak, yeni beceriler kazandırmak, farkındalık oluşturmak ve teknoloji dünyasındaki gelişmeleri anlaşılır bir dille aktarmak amacıyla yazıyorum.