据充分记录,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选项,如果有的话...
所以我想出了一个我希望避免的解决方案。基本上,我将不得不从输入中获取值并评估最后一个字符以确定输入的内容。这会给文本输入增加一些开销,但是我看不到其他解决方法。
签出:
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);
});
Event.originalEvent
具有键码。试试这个:
$textarea.on('keyup', function(e) {
e = e.originalEvent == undefined ? e : e.originalEvent;
alert(e.key);
}