2014-09-30 112 views
1

据了解,Android中的Chrome不支持keydown和keyup事件。我使用jQuery到事件侦听器连接到像这样的文本区域:Android Chrome - Keypress事件没有返回任何关键数据(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的选择项,如果有任何...

+2

做'.change'工作:

检查出来? – Alex 2014-09-30 14:21:32

+0

我相信只有当文本区域失去焦点时才会触发更改。 – gabaum10 2014-09-30 14:26:28

回答

4

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

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); 
});