Today I ran into this problem. How android chrome does not support these key events! I assume that you have found a workaround by now, but here is the fix that I came up with now.
function newKeyUpDown(originalFunction, eventType) { return function() { if ("ontouchstart" in document.documentElement) { // if it a touch device, or test here specifically for android chrome var $element = $(this), $input = null; if (/input/i.test($element.prop('tagName'))) $input = $element; else if ($('input', $element).size() > 0) $input = $($('input', $element).get(0)); if ($input) { var currentVal = $input.val(), checkInterval = null; $input.focus(function(e) { clearInterval(checkInterval); checkInterval = setInterval(function() { if ($input.val() != currentVal) { var event = jQuery.Event(eventType); currentVal = $input.val(); event.which = event.keyCode = (currentVal && currentVal.length > 0) ? currentVal.charCodeAt(currentVal.length - 1) : ''; $input.trigger(event); } }, 30); }); $input.blur(function() { clearInterval(checkInterval); }); } } return originalFunction.apply(this, arguments); } } $.fn.keyup = newKeyUpDown($.fn.keyup, 'keyup'); $.fn.keydown = newKeyUpDown($.fn.keydown, 'keydown');
source share