Önizleme

6 haneli OTP giriş kutusu. Bir sayı girildiğinde otomatik olarak bir sonraki kutuya geçilir.

Doğrulama kodunu girin
Bir sayı girdiğinizde otomatik olarak bir sonraki kutuya geçecektir.

Kullanım durumları ve özellikleri

Tasarım ve kullanıcı deneyiminin önemli noktaları

  1. 52x60px kutu boyutu: Yüksek görünürlük ve kolay dokunma işlemi için en uygun boyut.

  2. transform: Scale(1.05) odakta: Şu anda hangi kutuya girildiğini açıkça görebilirsiniz.

  3. .filled sınıfı: Dolu kutunun kenarlık rengini değiştirerek ilerlemeyi görselleştirin.

Nasıl kişiselleştirilir

4 haneli OTP’ye değiştirildi


{/* Giriş öğelerinin sayısını 4'e düşürün */}

<input class="otp-box" type="text" inputmode="numeric" maxlength="1" />

<input class="otp-box" type="text" inputmode="numeric" maxlength="1" />

<input class="otp-box" type="text" inputmode="numeric" maxlength="1" />

<input class="otp-box" type="text" inputmode="numeric" maxlength="1" />

Kutu boyutunu değiştir


.otp-box { width: 44px; height: 52px; font-size: 1.25rem; }

Uygulama kodu

<div class="otp-inputs" id="otp-inputs">

<input class="otp-box" type="text" inputmode="numeric" maxlength="1" />

<input class="otp-box" type="text" inputmode="numeric" maxlength="1" />

<input class="otp-box" type="text" inputmode="numeric" maxlength="1" />

<input class="otp-box" type="text" inputmode="numeric" maxlength="1" />

<input class="otp-box" type="text" inputmode="numeric" maxlength="1" />

<input class="otp-box" type="text" inputmode="numeric" maxlength="1" />

</div>



<style>
.otp-inputs { display: flex; gap: 0.75rem; }

.otp-box {

width: 52px; height: 60px;

background: rgba(255,255,255,0.06);

border: 2px solid rgba(255,255,255,0.12);

border-radius: 12px;

color: white;

font-size: 1.5rem;

font-weight: 700;

text-align: center;

outline: none;

transition: border-color 0.2s, background 0.2s, transform 0.1s;

}

.otp-box:focus { border-color: #6366f1; background: rgba(99,102,241,0.1); transform: scale(1.05); }

.otp-box.filled { border-color: rgba(99,102,241,0.5); }
</style>



<script>

(function() {

var inputs = Array.from(document.querySelectorAll('#otp-inputs .otp-box'));

inputs.forEach(function(input, i) {

  input.addEventListener('input', function(e) {

    var val = e.target.value.replace(/[^0-9]/g, '');

    e.target.value = val.slice(-1);

    if (val && i < inputs.length-1) inputs[i+1].focus();

    e.target.classList.toggle('filled', !!e.target.value);

  });

  input.addEventListener('keydown', function(e) {

    if (e.key==='Backspace' && !e.target.value && i>0) {

      inputs[i-1].focus(); inputs[i-1].value=''; inputs[i-1].classList.remove('filled');

    }

  });

  input.addEventListener('paste', function(e) {

    e.preventDefault();

    var text = (e.clipboardData || window.clipboardData).getData('text').replace(/[^0-9]/g, '');

    text.split('').forEach(function(ch, j) {

      if (inputs[i+j]) { inputs[i+j].value = ch; inputs[i+j].classList.add('filled'); }

    });

    var nextEmpty = inputs.findIndex(function(inp, j) { return j >= i && !inp.value; });

    if (nextEmpty !== -1) inputs[nextEmpty].focus();

  });

});

})();

</script>

Tarayıcı uyumluluk durumu

| Tarayıcı | Uyumluluk durumu |

|----------|----------|

| Krom 66+ | ✅ Tamamen uyumlu |

| Firefox 63+ | ✅ Tamamen uyumlu |

| Safari 12+ | ✅ Tamamen uyumlu |

| Kenar 79+ | ✅ Tamamen uyumlu |

Mobil cihazlarda inputmode="numeric" sayısal klavyeyi otomatik olarak görüntüleyerek kullanılabilirliği büyük ölçüde artırır.