JQuery ile "Sil" Keypress'i Yakalama


118

Tuşa basma olay işleyicisi için jQuery belgelerinden örnek kodu kullanırken, Deleteanahtarı yakalayamıyorum . Aşağıdaki kod parçası , FireFox'ta tuşa basıldığında günlüğe 0kaydedilecektir Delete:

$(document).keypress(function(e) {
    console.log(e.which);       
});

Görünüşe göre Deleteanahtarı ele geçirmenin bir yolu olmalı , ancak bu belirsiz bir terim, bu yüzden Google'ın bu konuda pek yardımcı olmadığını kanıtlamıyor.

Yanıtlar:


202

Sen kullanmamalısınız keypressolayı ancak keyupya keydownolay nedeniyle keypressolay gerçek (yazdırılabilir) karakterler için tasarlanmıştır. keydowno gibi tüm baskı yapılmayan anahtarlarını yakalayacaktır böylece daha düşük bir seviyede ele alınır deleteve enter.


keyupişi daha iyi yapmak olur.
localhoost

2
@atilkan hayır, kullanıcı geri bildirim bekliyor keydown, değil keyup. Tüm metin düzenleyicileri, bir tuşa basıldığında değil, bırakıldığında eylem gerçekleştirir.
Philippe Leybaert

1
@PhilippeLeybaert Benim durumumda program son basılan karakteri yakalayamıyor.
localhoost

82
$('html').keyup(function(e){
    if(e.keyCode == 46) {
        alert('Delete key released');
    }
});

Kaynak: www.cambiaresearch.com'dan javascript karakter kodları anahtar kodları


18
Olmalı alert('Delete Key Released').
Waldheinz

Eğer birisi tuşa basmayı Tod'un önerdiği yerine tuşa basmayı kullanırsa, o zaman keycode == 46 olayına karşı alırsınız. anahtar (nokta). ancak keyUp ile iyi çalışıyor. Teşekkürler
Mubashar

34

Javascript Anahtar Kodları

  • e.keyCode == 8 içinbackspace
  • e.keyCode == 46 için forward backspaceveya deletePC'lerde düğme

Bu detay dışında Colin & Tod'un cevabı işe yarıyor.


4
E.keyCode olmalı ve e.KeyCode değil
Jerome

16

event.key === "Sil"

Daha yeni ve çok daha temiz: kullanın event.key. Artık keyfi sayı kodları yok!

NOT: Eski özellikler ( .keyCodeve .which) Kullanımdan Kaldırılmıştır.

document.addEventListener('keydown', function(event) {
    const key = event.key; // const {key} = event; ES6+
    if (key === "Delete") {
        // Do things
    }
});

Mozilla Belgeleri

Desteklenen Tarayıcılar

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.