据了解,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选项开放,如果有的话......
答案 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);
});