经过调查,当连接到iPad上的蓝牙键盘时,onKeyUp的任何输入都会返回0作为键码.该演示工作正常,但是当使用屏幕键盘时它不起作用,因为键码返回0. I created this jsFiddle to demonstrate.它在Chrome和Safari for iPad上进行了测试,结果与onKeyPress一样正常,但只返回0与onKeyUp.
$('#inputKeyUp').keyup(function (event){ $("#outputKeyUp").text("Key Up Key: " + event.which);});$('#inputKeyPress').keypress(function (event){ $("#outputKeyPress").text("Key Press Key: " + event.which);});
<script src="https://AJAX.GoogleAPIs.com/AJAX/libs/jquery/2.1.1/jquery.min.Js"></script><textarea ID="inputKeyUp">keyup</textarea><div ID="outputKeyUp">Key Up Key:</div><b/><textarea ID="inputKeyPress">keypress</textarea><div ID="outputKeyPress">Key Press Key:</div>
编辑:刚刚向Apple报告了这个错误.我们将看看是否有任何结果.
解决方法 测试研究我刚刚对此进行了一些测试,并发现在iOS Safari上使用蓝牙键盘时的keyUp事件中,唯一能够根据属性e.key,e.charCode,e.keyCode提供任何适当反馈的键.以及e.which是以下键:
>逃避
>向上箭头
>左箭头
>右箭头
>向下箭头
所有其他键返回以下内容:
{ key: "Dead",charCode: 0,keyCode: 0,which: 0}
这些特殊键(转义键和箭头键)仅根据语法UIKeyinput {PascalCasedKeyname}在e.key属性上返回不同的值:
> UIKeyinputEscape
> UIKeyinputUpArrow
> UIKeyinputleftArrow
> UIKeyinputRightArrow
> UIKeyinputDownArrow
摘要
在iOS上,基于我的快速学习,你可以在keyUp事件上识别的唯一键是Escape和四个箭头键,通过在e.key属性上匹配它们的名称.这些值也出现在keyDown事件中.
如果您仍然需要等到keyUp事件为您的应用程序触发,并且您需要匹配除这些特殊键之外的其他键,我能想到的唯一解决方案是使用keyDown事件来捕获键,但是然后监听keyDown事件中的keyUp事件如下:
el.addEventListener("keydown",e => { if (e.which === 13) // Enter key,or which ever key code you'd like el.addEventListener("keyup",function keyUp(e) { el.removeEventListener("keyup",keyUp,false) // Memory clean-up // Your code here },false)},false)
此外
在快速搜索“UIKeyinput”之后,我发现UIKeyinput是“一组UIResponder用于实现简单文本输入的子类的方法”. (Apple’s Developer Documentation)这将解释这些键名的特殊语法.
总结以上是内存溢出为你收集整理的javascript – iPad蓝牙键盘使用onKeyUp为任何键返回0的键码全部内容,希望文章能够帮你解决javascript – iPad蓝牙键盘使用onKeyUp为任何键返回0的键码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)