Przechwytywanie klawiatury "Delete" za pomocą jQuery
Używając przykładowego kodu z dokumentacji jQuery dla obsługi zdarzenia keypress, nie jestem w stanie uchwycić klucza Delete. Po naciśnięciu klawisza Delete w Firefoksie zostanie wyświetlony poniższy fragment:
$(document).keypress(function(e) {
console.log(e.which);
});
Wydaje się, że musi być jakiś sposób, aby uchwycić Usuń klucz, ale jest to niejednoznaczne określenie, więc Google nie okazuje się zbyt pomocne w tym.
4 answers
Nie należy używać zdarzenia keypress
, ale zdarzenia keyup
lub keydown
, ponieważ zdarzenie keypress
jest przeznaczone dla prawdziwych (drukujących) znaków. keydown
jest obsługiwany na niższym poziomie, więc przechwyci wszystkie nieprintujące klucze, takie jak delete i enter .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-04 14:06:45
$('html').keyup(function(e){
if(e.keyCode == 46) {
alert('Delete key released');
}
});
Źródło: kody znaków javascript kody klawiszy z www.cambiaresearch.com
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-12 01:41:13
Javascript Keycodes
- e. keyCode = = 8 dla backspace
- e. keyCode = = 46 for forward backspace or delete button in PC ' s
tylko że ten szczegół działa.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-30 05:16:00
Event.klucz = = = "Delete"
Nowsze i znacznie czystsze: użyj event.key
. Koniec z dowolnymi kodami liczbowymi!
document.addEventListener('keydown', function(event) {
const key = event.key; // const {key} = event; ES6+
if (key === "Delete") {
// Do things
}
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-03 01:36:35