Używam javascript / jQuery .. na keydown input[type='text'] otrzymuję kod klucza. Muszę ustalić, czy jest to kod znaku lub kod polecenia, ponieważ muszę wiedzieć, czy wprowadzenie zostanie zmienione. Nie mogę użyć imprezy change, ponieważ ten zdarzenie jest plotowane, dopóki elementu nie będzie lekceważyć.

2
André Pena 11 październik 2011, 21:24

4 odpowiedzi

Najlepsza odpowiedź

Zamiast bawić się z kluczami, dlaczego nie tylko zachować buforowaną kopię wartości w pamięci i po prostu porównuj (i zaktualizuj w razie potrzeby) za każdym razem naciśnięcie klawisza:

var the_value = $('#the-input').val();
$('#the-input').keyup(function(ev) {
    if (the_value != $(this).val()) {
        the_value = $(this).val();
        // input has changed, act on event here
    }
});
2
Rob W 11 październik 2011, 17:37

Powinieneś być w stanie użyć event.ctrlKey, event.altKey i event.shiftKey itp. W trybie obsługi zdarzeń.

Sprawdź także Tabela ASCII, możesz sprawdzić, czy klucz do klucza wynosi od 33 i AMP; 127, na przykład, aby sprawdzić pliki A-Z, liczby i znaki interpunkcyjne (brak miejsca, Del, Enter itp.)

2
Clive 11 październik 2011, 17:29
switch (e.keyCode) {
// up                                                                         
case 38:
break;
// down                                                                        
case 40:
break;
// esc                                                                         
case 27:
break;
// enter                                                                         
case 13:
break;
}

Wyszukaj kody JavaScript w Google, aby uzyskać pełną listę. Keycody JavaScript nie są erily Cross Browser spójne.

0
user989818user989818 11 październik 2011, 17:28

Krótka odpowiedź brzmi, że po prostu nie można niezawodnie wykryć, czy naciśnięcie klawisza odpowiada wpisywanie znaku drukowania w wydarzeniach {X0}} lub keyup (które są tylko zaniepokojeni kluczem fizycznym). Aby wszystko zrobić z wykrywaniem wpisanego znaku, zamiast tego użyj zdarzenia keypress.

Jednak brzmi to tak, jak naprawdę potrzebujesz, to zdarzenie wejściowe HTML5. Zobacz moją odpowiedź tutaj:

Złap tylko naciśnięcia klawiszy, które zmieniają wejście?

0
Community 23 maj 2017, 11:55