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

问题描述 投票:3回答:2

据充分记录,Android中的Chrome不支持按键和按键事件。我正在使用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设置文本区域的样式。这和那有什么关系吗?

我也接受非jQuery选项,如果有的话...

android jquery google-chrome jquery-mobile
2个回答
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);
});

0
投票

Event.originalEvent具有键码。试试这个:

$textarea.on('keyup', function(e) {
    e = e.originalEvent == undefined ? e : e.originalEvent;
    alert(e.key);
}
© www.soinside.com 2019 - 2024. All rights reserved.