Android Chrome - Keypress事件没有返回任何关键数据(jQuery)?

时间:2014-09-30 14:20:37

标签: android jquery google-chrome jquery-mobile

据了解,Android中的Chrome并不支持keydown和keyup事件。我使用jQuery将事件监听器附加到这样的文本区域:

$textarea.on('keyup', function(e) {
    alert(e.key);
}

也尝试过:

$textarea.on('keydown', function(e) {
    alert(e.key);
}

$这是文字区域。该活动不会返回任何有用的内容。查看事件对象:

Object
   altKey: false
   bubbles: true
   cancelable: true
   char: undefined
   charCode: 0
   ctrlKey: false
   currentTarget: HTMLTextAreaElement
   data: undefined
   delegateTarget: HTMLTextAreaElement
   eventPhase: 2
   handleObj: Object
   isDefaultPrevented: function returnFalse() {
   jQuery21102996875715907663: true
   key: undefined
   keyCode: 0
   metaKey: false
   originalEvent: KeyboardEvent
   relatedTarget: undefined
   shiftKey: false
   target: HTMLTextAreaElement
   timeStamp: 1412092745055
   type: "keydown"
   view: Window
   which: 0
__proto__: —

注意未定义任何键值。这只是为了简单地点击字母" A"。我有什么不对的吗?

有没有人知道是否有解决方法?我使用jQuery Mobile 1.4.2来设置textarea的样式。这与此有什么关系吗?

我也对非jQuery选项开放,如果有的话......

1 个答案:

答案 0 :(得分:6)

所以我想出了一个我希望避免的解决方案。基本上我将不得不从输入中获取值并评估最后一个字符以确定输入的内容。它会给文本输入增加一些开销,但我没有看到任何其他方法。

检查出来:

var currentCursorPos;
$this.on('keyup', function(e) {                    
    currentCursorPos = $this[0].selectionStart;              // grab the cursor position
    var val = $this.val();                                   // grab the input value
    console.log('Current Val: ' + val);
    var firstPrevious = val.charAt(currentCursorPos - 1);    // grab the character that was just entered
    console.log('Entered Character: ' + firstPrevious);
});