Shl*_*rtz 7 javascript math widget keydown web
我正在尝试创建一个拨号小部件,捕获"keydown"事件并突出显示相应的拨号号码.
因此,例如,单击键盘上的"A",将在UI上突出显示"2":
我已设法映射前5位数(2-6).因为它们每个包含3个字母,所以我能够像这样映射keyCode:
Math.floor(((KeyCode - 65)/ 3)+ 2).
问:有没有办法在一行中完成,所以PQRS和WXYZ适合解决方案?
如果你真的需要它,那可能会有效:
Math.min(9, Math.floor(((KeyCode - (KeyCode < 83 ? 65 : 66)) / 3) + 2))
Run Code Online (Sandbox Code Playgroud)
但你还必须确保KeyCode实际上是一个字母.
您讨论的显而易见的解决方案更好,因为它可读,可配置,并且速度同样快:
function toDialNumber(KeyCode) {
var keyMap = {1:"", 2:"ABC", 3:"DEF", 4:"GHI", 5:"JKL", 6:"MNO", 7:"PQRS", 8:"TUV", 9:"WXYZ"};
var letter = String.fromCharCode(KeyCode);
for(key in keyMap) if(keyMap[key].indexOf(letter)>=0) return key;
return false;
}
Run Code Online (Sandbox Code Playgroud)