2015-11-26 15 views
12

ile görüntülenir gecikme.Metin Ben hemen bir div gösterilmek üzere bir metin alanına girin metni istediğiniz gecikme

Yani "abc" girerseniz, yalnızca "ab" gösterir. Başka bir karakter girmem gerekiyor, örneğin "abcd", böylece "abc" gösteriyor.
Son karakter her zaman eksik. İşte

bunu deneyebilirsiniz: http://jsfiddle.net/285cz0np/

+3

Değer, işlev çağrıldığında henüz güncellenmemiştir. Farklı bir 'anahtar *' etkinliği kullanmak isteyebilirsiniz. –

cevap

15

olay onkeydown ateş ediliyor. Girdi öğesinin değeri henüz değişmediğinden sonuçları görmüyorsunuz.

Bunun yerine, olarak değiştirebiliriz: (updated example). Veya işlevi çağırmadan önce bir gecikme ayarlayabilirsiniz.


Alternatif olarak, input event dinlemek olabilir: tuş bırakılıncaya kadar girdi metin değeri değişmeyecek çünkü

Example Here

document.getElementById("keyword").addEventListener('input', function (e) { 
    document.getElementById("query").textContent = e.target.value; 
}); 
+4

'input' da güzel çünkü metnin değişmesiyle ilgili diğer durumlarda kullanılır. Ses yazımı, yapıştırma veya otomasyon gibi. – Kroltan

6

konudur. setTimeout kullanarak Seni onkeydown istiyorum çünkü bu çözüm hala onkeydown olayı

kullanarak çalışacak, onkeyup değiştirilmemesi tavsiye sizin fonksiyonunu ( func)

çalışan önce değerini, güncellemek için tarayıcı izin

keyword.onkeydown = function (e) { setTimeout(func,0) } 

Güncelleme Örnek jsFiddle: http://jsfiddle.net/285cz0np/1/

sana input olaya değiştirmek önerilir. Örneğin, kullanıcı panodan yapıştırırsa (yalnızca fareyi kullanarak), etkinliğiniz patlamaz.

5

Bunun nedeni, işlevi tetikleyen olayın onkeydown olmasıdır, bu nedenle tuşa basıldığında, işlev metin alanının değerini okur. Şu anda verileri okur, basılan anahtar henüz gerçek değere eklenmedi.

Kolay bir düzeltme olayı onkeyup olarak değiştirmektir, çünkü anahtar yukarı durumda olduğu zaman, o tuşun değeri değere eklenecektir.

window.onload = function() { 
    keyword.onkeyup = function (e) { 
     func(); 
    } 
} 
İlgili konular