WCAG 3.3.7 · A Seviyesi
Tekrarlanan Giriş
Aynı işlem sürecinde kullanıcının daha önce girdiği bilgilerin yeniden istenmemesini; gerekiyorsa otomatik doldurulmasını veya seçilebilir olarak sunulmasını ister.
Kısaca
Çok adımlı bir başvuruda ilk adımda girilen adresin üçüncü adımda yeniden istenmesi, çoğu kullanıcı için küçük bir zahmettir. Tek parmakla yazan, ekran okuyucuyla form dolduran veya bellek güçlüğü yaşayan biri için ise işlemi yarıda bırakma sebebi olabilir.
Bu kriter, aynı işlem süreci içinde kullanıcının daha önce verdiği bir bilginin yeniden istenmemesini ister. Bilgi tekrar gerekiyorsa otomatik olarak doldurulmalı ya da kullanıcının seçebileceği biçimde sunulmalıdır. Güvenlik amaçlı tekrarlar (parola), doğrulama amaçlı tekrarlar ve geçerliliğini yitirmiş bilgiler istisnadır.
Neleri kapsar?
- Çok adımlı işlemler: Başvuru, kayıt, ödeme ve randevu gibi birden fazla adımdan oluşan süreçler.
- Otomatik doldurma: Daha önce girilen bilginin sonraki adımda kendiliğinden doldurulması.
- Seçilebilir sunma: Önceki bilginin "Aynı adresi kullan" gibi bir seçenekle veya listeden seçilerek yeniden kullanılabilmesi.
- İstisnalar: Parola veya doğrulama kodu gibi güvenlik amaçlı tekrarlar; e-posta teyidi gibi doğrulama amaçlı tekrarlar; geçerliliğini yitirmiş veya güncellenmesi gereken bilgiler.
- Kapsam dışı notlar: Kriter yalnızca aynı oturumdaki aynı süreci kapsar; farklı günlerde yapılan ayrı başvurular arasında bilgi taşımayı zorunlu kılmaz. Tarayıcının otomatik doldurma özniteliği (
autocomplete) yardımcı olur ancak tek başına bu kriteri karşılamaz, çünkü kullanıcının tarayıcısında kayıtlı veri olmayabilir.
Kimleri etkiler?
Bilişsel engeli veya bellek sorunu olan kullanıcılar daha önce ne yazdıklarını hatırlamakta zorlanabilir. Motor engelli kişiler için her ek giriş fiziksel çaba demektir. Ekran okuyucu kullanan kör kullanıcılar ve yazmak için ses komutu ya da anahtar cihazı kullanan kişiler, tekrar eden alanlarda gereksiz yere zaman kaybeder. Az gören kullanıcılar da önceki adıma dönüp bilgi kontrol etmekte güçlük çekebilir.
Kontrol listesinde
Bu kriter, Bakanlığın A Seviyesi Kontrol Listesi'nde 121–122 numaralı soruları kapsar. Yönlendirme soruları sayfada ilgili içerik olup olmadığını belirler; yoksa liste sizi sonraki soruya geçirir. Aşağıdaki açıklamalar sorulardan alıntı değil, özetidir. Soruların tam metni için resmî listeye bakın.
| Soru | Türü | Ne kontrol eder? |
|---|---|---|
| 121 | Yönlendirme | Aynı adımlar dizisinde kullanıcıdan daha önce girdiği bir bilgiyi yeniden girmesinin istenip istenmediğini sorar. Güvenlik, doğrulama ve geçerliliğini yitirmiş bilgi durumları istisnadır. |
| 122 | ★ Zorunlu | İstisna dışında kalan durumlarda daha önce alınan bilgilerin otomatik doldurulup doldurulmadığını veya yeniden kullanılabilir biçimde sunulup sunulmadığını kontrol eder. |
Resmî kontrol listesini indirin (PDF), yeni sekmede açılır
Web için kod örnekleri
1. "Aynı adresi kullan" seçeneği
Teslimat ve fatura adresi gibi sık tekrarlanan bilgiler için en yaygın çözüm bir onay kutusudur.
<fieldset>
<legend>Tebligat adresi</legend>
<!-- Kullanıcı 1. adımda girdiği ikamet
adresini yeniden yazmak zorunda -->
<label for="teb-adres">Açık adres</label>
<textarea id="teb-adres"></textarea>
</fieldset><fieldset>
<legend>Tebligat adresi</legend>
<input type="checkbox" id="ayni-adres" checked
aria-controls="teb-adres-alani">
<label for="ayni-adres">
İkamet adresimle aynı (Moda Mah. Örnek Sok. No: 5, Kadıköy)
</label>
<div id="teb-adres-alani" hidden>
<label for="teb-adres">Açık adres</label>
<textarea id="teb-adres"></textarea>
</div>
</fieldset>
<script>
document.getElementById("ayni-adres").addEventListener("change", (e) => {
document.getElementById("teb-adres-alani").hidden = e.target.checked;
});
</script>2. Önceki adımın verisiyle ön doldurma
Önceki adımda alınan bilgi, sonraki adımda kullanıcının düzenleyebileceği biçimde doldurulmuş olarak gelebilir.
<!-- 3. adım: iletişim bilgileri (sunucu 1. adımın verisini yerleştirir) -->
<label for="iletisim-eposta">Bildirimlerin gönderileceği e-posta</label>
<input type="email" id="iletisim-eposta"
value="[email protected]"
autocomplete="email">3. Önceki bilgiyi seçilebilir sunmak
Bir süreçte birden fazla kişi veya adres girilmişse, sonraki adımda bunlar arasından seçim yapılabilmelidir.
<fieldset>
<legend>Randevuya katılacak kişi</legend>
<input type="radio" id="kisi-1" name="katilimci" value="1" checked>
<label for="kisi-1">Ayşe Yılmaz (başvuru sahibi)</label>
<input type="radio" id="kisi-2" name="katilimci" value="2">
<label for="kisi-2">Mehmet Yılmaz (bakmakla yükümlü olunan kişi)</label>
<input type="radio" id="kisi-yeni" name="katilimci" value="yeni">
<label for="kisi-yeni">Başka bir kişi</label>
</fieldset>4. autocomplete öznitelikleri
Doğru autocomplete değerleri tarayıcının kayıtlı bilgileri önermesini sağlar. Kriteri tek başına karşılamaz, ancak süreç içindeki ön doldurmayla birlikte kullanıldığında kullanıcının işini büyük ölçüde kolaylaştırır.
<label for="ad">Ad Soyad</label>
<input id="ad" autocomplete="name">
<label for="tel">Cep telefonu</label>
<input id="tel" type="tel" autocomplete="tel">
<label for="posta-kodu">Posta kodu</label>
<input id="posta-kodu" autocomplete="postal-code" inputmode="numeric">5. İstisna: güvenlik ve doğrulama
Parolanın iki kez girilmesi veya e-posta adresinin teyit için yeniden yazılması istisna kapsamındadır. Yine de parolayı göster seçeneği gibi yöntemler tekrar ihtiyacını azaltabilir.
<label for="parola">Parola</label>
<input type="password" id="parola" autocomplete="new-password">
<input type="checkbox" id="parola-goster">
<label for="parola-goster">Parolayı göster</label>
<script>
document.getElementById("parola-goster").addEventListener("change", (e) => {
document.getElementById("parola").type = e.target.checked ? "text" : "password";
});
</script>Mobil için kod örnekleri
iOS (SwiftUI)
import SwiftUI
struct TebligatAdresiAdimi: View {
let ikametAdresi: String // Önceki adımdan gelir
@State private var ayniAdres = true
@State private var tebligatAdresi = ""
var body: some View {
Form {
Section("Tebligat adresi") {
Toggle("İkamet adresimle aynı", isOn: $ayniAdres)
if ayniAdres {
Text(ikametAdresi)
.foregroundStyle(.secondary)
} else {
TextField("Açık adres", text: $tebligatAdresi, axis: .vertical)
.textContentType(.fullStreetAddress)
}
}
}
}
}Android (Jetpack Compose)
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.selection.toggleable
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.semantics.Role
@Composable
fun TebligatAdresiAdimi(ikametAdresi: String) {
var ayniAdres by remember { mutableStateOf(true) }
var tebligatAdresi by remember { mutableStateOf("") }
Column {
Row(
Modifier.toggleable(
value = ayniAdres,
onValueChange = { ayniAdres = it },
role = Role.Checkbox
),
verticalAlignment = Alignment.CenterVertically
) {
Checkbox(checked = ayniAdres, onCheckedChange = null)
Text("İkamet adresimle aynı")
}
if (ayniAdres) {
Text(ikametAdresi)
} else {
OutlinedTextField(
value = tebligatAdresi,
onValueChange = { tebligatAdresi = it },
label = { Text("Açık adres") }
)
}
}
}Nasıl test edilir?
- Süreci baştan sona tamamlayın: Çok adımlı bir işlemi gerçek verilerle doldurun ve her adımda istenen bilgileri not edin.
- Tekrarları belirleyin: Aynı bilgi birden fazla adımda isteniyor mu? İsteniyorsa otomatik dolu mu geliyor veya seçilebilir mi?
- İstisnaları ayırın: Tekrar eden giriş güvenlik, doğrulama veya güncelleme amacıyla mı isteniyor?
- Geri dönüşleri deneyin: Bir önceki adıma dönüp tekrar ilerlediğinizde girdiğiniz bilgiler korunuyor mu?
- Otomatik araçların sınırı: Otomatik araçlar tek bir sayfayı inceler ve çok adımlı bir süreçteki tekrarları tespit edemez. Bu kriter tamamen elle test edilmelidir.
Sık yapılan hatalar
- Kimlik bilgilerini her adımda istemek: T.C. Kimlik No, ad soyad veya doğum tarihinin süreç boyunca birkaç kez sorulması.
- Geri dönünce formun boşalması: Önceki adıma dönüldüğünde girilen bilgilerin kaybolması.
- Fatura ve teslimat adresini ayrı ayrı istemek: "Aynı adres" seçeneği sunulmaması.
- autocomplete'i kapatmak:
autocomplete="off"ile tarayıcı önerilerinin gereksiz yere engellenmesi. - İstisnayı geniş yorumlamak: Güvenlik gerekçesi olmayan bilgilerin "doğrulama" adı altında tekrar istenmesi.
Kaynaklar
- Understanding SC 3.3.7: Redundant Entry (W3C), İngilizce, yeni sekmede açılır
- Erişilebilirlik blogu — Uygulamadan örnekler ve güncel yazılar.
- Erişilebilirlik kütüphanesi — Tekrarlanan giriş, otomatik doldurma, autocomplete ve diğer terimler.
Sitenizde bu kriter nasıl görünüyor?
Ücretsiz tarama, bu kriterdeki sorunları ve diğerlerini Bakanlığın A Seviyesi Kontrol Listesi esas alınarak listeler.
Sıradaki kriterler
Tutarlı Yardım
İletişim bilgisi, canlı destek, SSS veya sohbet robotu gibi yardım mekanizmaları birden çok sayfada sunuluyorsa, bunların her sayfada aynı göreli konumda yer almasını ister.
Kriteri inceleÜç Kere veya Aşağısı Yanıp Sönme Eşiği
İçeriğin herhangi bir saniyede üç kereden fazla yanıp sönmemesini ya da yanıp sönmenin genel ve kırmızı yanıp sönme eşiklerinin altında kalmasını ister.
Kriteri inceleVarsayılan İçerik Dili
Her sayfanın veya uygulamanın varsayılan dilinin kodda tanımlanmasını, böylece ekran okuyucuların metni doğru dilde ve doğru telaffuzla seslendirmesini ister.
Kriteri incele