Konu Başlıkları
Yükleniyor...

Reset ve Cancel Butonları: Formda Gerçekten Ne Yapıyorlar?

Web Formlarında Reset ve İptal Butonu Kullanımı

Reset ve cancel butonları çoğu formda alışkanlıktan duruyor. İkisi de HTML'in ilk yıllarından kalma ve ikisinin de bugünkü web formlarında yeri sandığından dar. Daha ilginci, reset butonunun tam olarak ne yaptığı konusunda yaygın kanının yanlış olması.

Reset formu temizlemez

HTML'de type="reset" taşıyan bir düğmeye basıldığında tarayıcı alanları boşaltmaz. Her alanı başlangıç değerine döndürür: metin kutusunda işaretlemedeki value, onay kutusunda checked özniteliği, açılır listede selected olan seçenek. Boş bir kayıt formunda bu iki davranış aynı şeye benzer, çünkü başlangıç değeri zaten boştur.

Fark düzenleme formlarında ortaya çıkıyor. Sunucu kullanıcının kayıtlı bilgilerini alanlara bastıysa, reset o bilgilere geri döner. Kullanıcı formu temizlediğini sanır, oysa eski veri geri gelmiştir. Aynı düğme, aynı etiket, iki farklı sonuç.

Bu yüzden "Sıfırla" etiketi baştan yanlış bir söz veriyor. Düğmenin gerçekten yaptığı iş "varsayılana dön" ve bunu isteyen ekran sayısı azdır: çok sayıda seçenek barındıran yapılandırma sayfaları, filtre panelleri, belki bir tema düzenleyici.

Bir de şu sınır var. Reset yalnızca işaretlemedeki değeri geri getirir. Varsayılanları veritabanından okuyup sayfaya basıyorsan, "varsayılana dön" ile kullanıcının son kaydettiği hal aynı şeye çıkar; gerçek fabrika ayarına dönmek istiyorsan o değerleri sayfaya ayrıca taşıman ve JavaScript ile yazman gerekir. type="reset" orada tek başına yetmez.

Kazanç tarafı boş bir düğme

Bir arayüz öğesini değerlendirirken sorulacak soru, yararlı olup olmadığından önce şu: en iyi durumda ne kazandırıyor, en kötü durumda ne kaybettiriyor?

Reset'in en iyi durumu, kullanıcının uzun bir formu baştan doldurmak istemesi ve alanları tek tek silmekten kurtulması. Nadir. En kötü durumu, gönder düğmesinin yanında durduğu için yanlışlıkla tıklanması ve on dakikalık emeğin uçması. Hiç nadir değil. Üstelik kayıp kalıcı: tarayıcı reset işlemi için geri alma sunmaz, Ctrl+Z alanları geri getirmez.

Cancel hangi ekranda gerçekten gerekli

İptal düğmesi reset kadar sorunlu değil, ama her forma konulacak bir şey de değil. Ayrımı, ekranın kullanıcıyı ne kadar kapattığına bakarak yapabilirsin.

Modal pencerede iptal gerekli. Kullanıcı kendi açtığı bir katmanın içindedir ve tarayıcının geri tuşu onu ya bu katmandan çıkarmaz ya da beklemediği bir yere götürür. Esc tuşu çalışsa bile görünür bir çıkış yolu şart, çünkü Esc keşfedilebilir değil.

Çok adımlı akışlarda da gerekli, fakat orada iptalin neyi sileceğini söylemesi gerekiyor. "Vazgeç" deyip üç adımlık veriyi sessizce çöpe atan bir sihirbaz, kullanıcıyı ikinci denemede her şeyi baştan yazmaya mahkûm eder.

Basit bir iletişim ya da arama formunda iptal düğmesi yalnızca gürültü. Kullanıcı vazgeçtiğinde başka bir bağlantıya tıklar veya sekmeyi kapatır; kimse formdan çıkmak için düğme aramaz.

İptali tutuyorsan yerleşimine de bak. Gönder ile iptali aynı görsel ağırlıkta yan yana koymak yanlış tıklamayı davet ediyor. İptal bağlantı görünümünde ya da düşük kontrastlı bir düğme olarak dursun, arada gözle görülür bir boşluk kalsın.

Türü belirtilmemiş iptal, aslında gönder düğmesidir

<button> öğesinin varsayılan türü submit. Yani form içinde şöyle bir satır bırakırsan iptal düğmen formu gönderir:

<button>Vazgeç</button>

Bir iptal düğmesini türünü yazmadan bırakmam: doğru satır type="button" taşır, iptal sunucuda bir şey yapacaksa da kendi eylemiyle ayrı durur. Bu hata özellikle sinsi, çünkü zorunlu alan doğrulaması devredeyken form gönderilmez ve test sırasında düğme çalışıyormuş gibi görünür; hata ancak form eksiksiz doldurulduğunda kendini gösterir.

Silme onayı mı, geri alma mı

Sepetten ürün çıkarmak, listeden satır silmek, bir kaydı kaldırmak. Bu işlemlerde klasik çözüm bir onay kutusu açıp "emin misiniz" diye sormak. Çoğu durumda daha iyisi var: işlemi hemen uygula, sonucun yanında birkaç saniye duran bir geri alma bağlantısı göster.

Onay kutusu her seferinde fazladan bir tıklama ister ve kullanıcı kısa sürede soruyu okumadan onaylamayı öğrenir. Geri alma ise bedelini yalnızca gerçekten hata yapan kullanıcıya ödetir.

Sınırı da doğru çizmek gerekiyor, çünkü geri alma işlemin geri alınabilir olmasına dayanıyor. Silinen kaydı bir süre işaretleyip saklayabiliyorsan geri alma mümkün. Ama işlem üçüncü bir sisteme e-posta gönderdiyse, ödeme aldıysa ya da veriyi kalıcı olarak sildiyse geri alınacak bir şey kalmaz. Orada onay doğru araçtır, hesap silme gibi ağır durumlarda kullanıcıya bir şey yazdırarak onaylatmak bile makul.

Sepetteki "kaldır" düğmesi bu ayrımın en net örneği. Kullanıcı o düğmeye basıp ürünü çıkarır, yanında beliren geri alma bağlantısıyla fikrini değiştirir, kimse onay kutusuyla yolundan alıkonulmaz. Aynı ekrana bir de iptal düğmesi koymak neyin iptal edildiğini belirsizleştirmekten başka işe yaramaz.