Mobil formda doğru klavye: type, inputmode ve autocomplete

Kısaca

Telefonda hangi klavyenin açılacağını input'un öznitelikleri belirler. Telefon için type="tel", e-posta için type="email" kullanın. Kimlik numarası ve posta kodu gibi rakamlardan oluşan ama sayı olmayan alanlarda type="text" ile inputmode="numeric" seçin. IBAN harf de içerdiği için type="text" kalır. Tutar için inputmode="decimal" yazın. autocomplete otomatik doldurmayı, enterkeyhint ise Enter tuşunun etiketini ayarlar.

Kısaca

Mobil formda kullanıcı her alana dokunduğunda bir klavye açılır. Hangi klavyenin açılacağına tarayıcı karar verir. Siz ona input'un öznitelikleriyle ipucu verirsiniz.

Yanlış klavye küçük bir sorun gibi görünür. Ama formda kaç alan varsa o kadar tekrar eder. Genel form kurallarını form tasarımı sayfasında anlattım. Bu sayfa yalnızca klavyeyle ilgili.

Dört öznitelik, dört ayrı iş

Bu dört öznitelik sık karıştırılır, oysa her biri ayrı bir şeyi ayarlar.

  • type verinin ne olduğunu söyler. MDN'e göre email ve url türleri gönderimden önce biçimi kontrol eder, tel etmez, çünkü telefon numarası biçimleri ülkeden ülkeye çok değişir.
  • inputmode yalnızca klavyeyi seçer. MDN açıkça yazar: bu öznitelik hiçbir geçerlilik kuralı koymaz. Varsayılan değeri text.
  • autocomplete tarayıcıya alanın amacını söyler. Tarayıcı kayıtlı e-postayı ya da posta kodunu buna bakarak önerir.
  • enterkeyhint klavyedeki Enter tuşunun etiketini seçer. Yazılmazsa tarayıcı inputmode, type ya da pattern özniteliğine bakarak bir etiket seçebilir.

MDN'deki inputmode değerleri sekiz tane. Açıklamaları kısaltarak Türkçeye çevirdim:

DeğerMDN'e göre ne açar
noneSanal klavye açılmaz. Sayfa kendi giriş kontrolünü sunuyorsa kullanılır.
textVarsayılan. Kullanıcının dilindeki standart klavye.
decimalRakamlar ve o dilin ondalık ayırıcısı. Eksi tuşu olabilir de olmayabilir de.
numericYalnızca 0-9 rakamları. Eksi tuşu cihaza göre değişir.
telTelefon tuş takımı: 0-9, yıldız (*) ve kare (#).
searchAramaya göre ayarlı klavye. Enter tuşu "Ara" diye etiketlenebilir.
emailE-postaya göre ayarlı klavye. Genelde @ karakteri ekranda durur.
urlWeb adresine göre ayarlı klavye. / tuşu öne çıkabilir.

MDN, tel, email, url ve search değerleri için aynı uyarıyı yapar. Alan o veriyi gerçekten istiyorsa eşleşen type değerini kullanın.

enterkeyhint için MDN yedi değer sayar: enter, done, go, next, previous, search ve send. Ben formun ortasındaki alanlarda next, son alanda done ya da send kullanırım.

Alan türü seçici

Aşağıdaki altı alanın her biri gerçek bir input. Sayfayı telefonda açıp alana dokunursanız klavyenin değiştiğini görürsünüz. Kötü örneğe geçince input'un öznitelikleri de değişir.

Alan türü seçici

Telefon

Örnek: 0532 123 45 67

Telefonda açılan klavye Telefon tuş takımı: 0-9, * ve #

Kötü Standart harf klavyesi

<input type="text">

Telefon tuş takımı açılmaz. Otomatik doldurma neyin istendiğini bilmez.

İyi Telefon tuş takımı: 0-9, * ve #

<input type="tel" autocomplete="tel-national" enterkeyhint="next">

Tarayıcı kayıtlı numarayı önerebilir. Enter tuşu genelde sonraki alana geçirir.

E-posta

Size bu adresten döneceğim

Telefonda açılan klavye E-posta klavyesi: genelde @ tuşu da var

Kötü Standart harf klavyesi

<input type="text" autocomplete="off">

Klavye e-postaya göre ayarlanmaz. autocomplete kapalı olduğu için tarayıcı kayıtlı adresi kendisi dolduramaz.

İyi E-posta klavyesi: genelde @ tuşu da var

<input type="email" autocomplete="email" spellcheck="false" enterkeyhint="next">

Tarayıcı biçimi kendisi kontrol eder. Bu türde ilk harf büyütülmez.

TC kimlik

11 rakam

Telefonda açılan klavye Rakam tuş takımı: yalnızca 0-9

Kötü Sayı klavyesi, çoğu zaman artır ve azalt düğmeleri

<input type="number">

Bir kimlik numarası artırılıp azaltılan bir sayı değildir. Kullanıcı başka bir şey yaparken değeri yanlışlıkla artırabilir.

İyi Rakam tuş takımı: yalnızca 0-9

<input type="text" inputmode="numeric" pattern="[0-9]{11}" maxlength="11" autocomplete="off">

Değer metin olarak kalır. pattern 11 rakam ister, maxlength fazlasını yazdırmaz.

IBAN

TR ile başlar, 26 karakter

Telefonda açılan klavye Standart klavye, harfler büyük yazılır

Kötü Sayı tuş takımı

<input type="number">

IBAN harfle başlar. Sayı alanına harf yazan kullanıcı neyi yanlış yaptığını açıkça göremez.

İyi Standart klavye, harfler büyük yazılır

<input type="text" autocapitalize="characters" spellcheck="false" maxlength="32" autocomplete="off">

Yazılan harfler büyük çıkar. maxlength boşluklu yazıma da yer bırakır: 26 karakter ve 6 boşluk.

Tutar

Örnek: 1250,50

Telefonda açılan klavye Ondalık tuş takımı: 0-9 ve ondalık ayırıcı

Kötü Rakam tuş takımı: yalnızca 0-9 garanti

<input type="text" inputmode="numeric">

numeric yalnızca 0-9 ister. Klavyede kuruş için virgül tuşu çıkmayabilir.

İyi Ondalık tuş takımı: 0-9 ve ondalık ayırıcı

<input type="text" inputmode="decimal" autocomplete="transaction-amount" enterkeyhint="done">

Kuruş için ondalık ayırıcı tuşu klavyede durur. Enter tuşu genelde klavyeyi kapatır.

Arama

Örnek: kablosuz kulaklık

Telefonda açılan klavye Standart klavye, Enter tuşu "Ara" der

Kötü Standart klavye, Enter etiketini tarayıcı seçer

<input type="text">

Etiket aramayı söylemeyebilir. Kullanıcı Enter'a basınca ne olacağını tahmin eder.

İyi Standart klavye, Enter tuşu "Ara" der

<input type="search" enterkeyhint="search" autocomplete="off">

Enter tuşunun etiketi, basınca ne olacağını söyler. Bazı tarayıcılar alana bir temizleme ikonu ekler.

Bir alan türü seçin, sonra Kötü ile İyi arasında geçin. Alan gerçek bir input: telefonda dokununca o özniteliklerin klavyesi açılır. Masaüstünde açılacak klavyeyi alanın altındaki kutu yazar. JavaScript kapalıysa altı alan da iki kod satırıyla birlikte alt alta görünür.

Sık gördüğüm bir hata da IBAN ve kimlik numarasında type="number" kullanmak. Rakam klavyesi açılsın diye seçilir ama yanında istenmeyen davranışlar da gelir. Bunları aşağıda anlattım.

Türkiye'ye özgü alanlar

MDN değerleri tanımlar ama Türkiye'deki alanlar için hangisini seçeceğinizi söylemez. Aşağıdaki tablo benim önerim: alanların biçimi kaynaklı, öznitelik seçimi bana ait.

AlanÖzniteliklerNot
Cep telefonutype="tel" autocomplete="tel-national"pattern koymam. Boşluğu ve parantezi kabul ederim, kaydederken temizlerim.
T.C. kimlik notype="text" inputmode="numeric" pattern="[0-9]{11}" maxlength="11"autocomplete için bir değer yok. Ben off yazarım.
IBANtype="text" autocapitalize="characters" spellcheck="false"Harf yazılabilen klavye açılır. Dörtlü grupları kabul ederim, boşlukları kaydederken atarım.
Posta kodutype="text" inputmode="numeric" pattern="[0-9]{5}" autocomplete="postal-code"Sayı alanı değil. Baştaki 0 korunmalı.
Tutar (TL)type="text" inputmode="decimal"Ödeme formunda autocomplete="transaction-amount" eklerim.

Telefon. Türkiye'nin ülke kodu 90. Yurt içinde cep numarası 0 ile başlar, 5 ile başlayan üç haneli bir önek ve yedi haneli abone numarasıyla devam eder. Kullanıcı bunu "0532 123 45 67" diye de, "5321234567" diye de yazar. İkisini de kabul edin.

MDN'e göre tel-national ülke kodu olmayan ama ülke içi öneki içeren numaradır. 0 ile başlayan yazım buna uyar. Uluslararası numara da alıyorsanız tel kullanın: MDN onu ülke kodunu içeren tam numara diye tanımlar.

T.C. kimlik numarası. 11 hanedir ve son rakamı çifttir. MDN'in autocomplete listesinde kimlik numarası için bir değer yok. Rakam klavyesi için inputmode="numeric" yeterli.

IBAN. Türkiye'de 26 karakterdir ve TR ile başlar. Wikipedia'daki tabloya göre son 16 karakter harf de içerebilir. Bu yüzden rakam klavyesi seçmiyorum.

IBAN geleneksel olarak dörtlü gruplarla yazılır, elektronik aktarımda boşluklar atılır. Form kullanıcıya grup grup yazma izni vermeli.

Posta kodu. Beş hanedir ve ilk iki hane ilin plaka kodudur. Plaka kodu iki haneli yazıldığı için, kodu 10'dan küçük illerde posta kodu 0 ile başlar ve bu 0 kaybolmamalı. MDN de posta kodunu type="number" için uygun olmayan değerler arasında sayar.

MDN'e göre pattern değerin tamamıyla eşleşmeli. Biçimi alanın yanında görünür bir yazıyla da anlatın. MDN bunu erişilebilirlik için zorunlu sayar.

type="number" tuzağı

MDN'e göre number türü yalnızca artırılıp azaltılan sayılar içindir. Sadece rakamdan oluşan ama gerçekte sayı olmayan değerler için uygun değildir. MDN'in örnekleri posta kodu ve kart numarası.

Aynı sayfa iki risk sayar. Kullanıcı başka bir şey yapmaya çalışırken sayıyı yanlışlıkla artırabilir. Sayı olmayan bir şey yazdığında da neyi yanlış yaptığını açıkça göremez.

MDN'in önerdiği yol, type="text" yanında inputmode="numeric" ve bir pattern kullanmak. Bir not daha: pattern özniteliği number türünde çalışmaz.

Tutarda numeric değil decimal seçin. numeric yalnızca 0-9 ister ve kuruş için virgül tuşu çıkmayabilir. decimal kullanıcının diline göre ondalık ayırıcıyı da gösterir.

Benim notum

Audit'lerde formlara telefonla da bakarım ve klavyeyi ayrı bir madde olarak not ederim. En sık bulduğum şey, her alanın aynı harf klavyesini açması. Geliştirici çoğu zaman type="text" yazıp geçmiştir.

İkinci sık hata, kayıt formunda e-posta ve telefon alanlarına autocomplete="off" yazmak. MDN'e göre off, tarayıcının değeri doldurmasına izin vermez ve kullanıcı her şeyi elle yazar. Ben bu değeri yalnızca kimlik numarası ve IBAN gibi tarayıcının zaten bilmediği alanlarda kullanırım.

Klavye doğru olunca bir sorun daha görünür: açılan klavye ekranın bir bölümünü kaplar. Alanların ve butonların rahat dokunulabilir büyüklükte kalması için dokunma alanı sayfasına bakın. Hata mesajlarının ne zaman çıkacağını satır içi doğrulama sayfasında anlattım.

Erişilebilirlik notu

WCAG 2.2'deki 1.3.5 Girdi amacını belirleme ölçütü AA düzeyindedir. Kullanıcı hakkında bilgi toplayan alanın amacı, standardın listelediği girdi amaçlarından biriyse programla belirlenebilmelidir. W3C'nin yeterli teknikleri arasında HTML autocomplete özniteliği var.

W3C otomatik doldurmayı hafıza sorunu ya da disleksi yaşayan kullanıcılar için önemli bir kolaylık sayar, motor engeli olan kullanıcı da daha az yazar. Doğru klavyeyi ben de aynı işin parçası görürüm. Ölçütlerin tamamını WCAG rehberinde anlattım.

autocapitalize fiziksel klavyede bir şey değiştirmez, sanal klavye ve sesle yazma gibi yöntemleri etkiler. MDN'e göre email, url ve password türlerinde harfler zaten büyütülmez. Bu yüzden e-posta alanına autocapitalize yazmanıza gerek yok.

Kontrol listesi

Bir formu yayına almadan önce telefonda her alana tek tek dokunur ve bu listeden geçerim.

  • Telefon alanında type="tel" var ve telefon tuş takımı açılıyor.
  • E-posta alanında type="email" var ve e-posta klavyesi açılıyor.
  • Kimlik, posta kodu ve kart numarası alanlarında type="number" yok.
  • Tutar alanında ondalık ayırıcı klavyede görünüyor.
  • Kişisel bilgi alanlarında doğru autocomplete değeri var.
  • pattern kullanan alanın yanında biçim yazıyla anlatılıyor.
  • Son alanda Enter tuşu formu bitirmeye uygun bir etiket taşıyor.

Bu kontrolü benim yapmamı isterseniz UX Audit mobil maddeleri de kapsıyor. Kendiniz bakacaksanız UX audit kontrol listesi ile başlayın.

Sık sorulanlar

inputmode ile type arasındaki fark nedir?

type verinin türünü belirler ve email ile url gibi türlerde biçimi kontrol eder. inputmode yalnızca hangi sanal klavyenin açılacağını söyler, hiçbir kural koymaz.

Telefon numarası için hangi input type kullanılır?

type="tel" kullanın. MDN'e göre mobil tarayıcılar bu türde telefon numarasına uygun bir klavye gösterir. Türkiye içi numara için autocomplete="tel-national" ekleyin.

TC kimlik numarası için type="number" kullanılır mı?

Hayır. Kimlik numarası artırılıp azaltılan bir sayı değildir. type="text", inputmode="numeric" ve pattern="[0-9]{11}" kullanın.

Masaüstünde inputmode bir şey değiştirir mi?

Fiziksel klavyede değiştirmez, çünkü ekranda sanal klavye açılmaz. Değeri doğrulamaz da. Etkisi dokunmatik cihazlardaki sanal klavyede görülür.

Kaynaklar (13)
  1. MDN Web Docs, inputmode (HTML global attribute). erişim 2026-11-03
  2. MDN Web Docs, enterkeyhint (HTML global attribute). erişim 2026-11-03
  3. MDN Web Docs, <input>: The HTML Input element. erişim 2026-11-03
  4. MDN Web Docs, <input type="tel">. erişim 2026-11-03
  5. MDN Web Docs, <input type="number">. erişim 2026-11-03
  6. MDN Web Docs, <input type="search">. erişim 2026-11-03
  7. MDN Web Docs, HTML attribute: autocomplete. erişim 2026-11-03
  8. MDN Web Docs, autocapitalize (HTML global attribute). erişim 2026-11-03
  9. W3C, Understanding Success Criterion 1.3.5: Identify Input Purpose (WCAG 2.2). erişim 2026-11-03
  10. Wikipedia, T.C. kimlik numarası. erişim 2026-11-03
  11. Wikipedia, International Bank Account Number (Türkiye satırı). erişim 2026-11-03
  12. Wikipedia, Postal codes in Turkey. erişim 2026-11-03
  13. Wikipedia, Telephone numbers in Turkey. erişim 2026-11-03