You can use keydown
for that:
$('input').keydown(function(e) {
if (e.which == 40) { // up key
return false;
}
}
keyup
fires after the keypress
event has been handled and keypress
is supposed to not fire for non-printable characters (though there are some inconsistencies across different browsers), so preventing the event's default action right at keydown
is the best course of action.
Keep in mind that if you don't have a good reason for preventing the default action (e.g. going through an autocomplete list while having the search field focused), you may be affecting other users' usability as commented by @Kolink.