Javascript 在D3.js中检测按键

Javascript 在D3.js中检测按键,javascript,d3.js,Javascript,D3.js,我读过很多帖子和答案,但它们似乎都过时了 我的目标是能够通过文本“制表”,并在enter和/或空格键上运行函数。我试过keyCode,charCode,key,which,keypress,keypup,keypdown等等 我有一个文本节点,我可以通过使用: .attr('role', 'button') .attr('tabindex', '0') .attr('focusable', 'true') .on('click', sel) .on('keypress', function(){

我读过很多帖子和答案,但它们似乎都过时了

我的目标是能够通过文本“制表”,并在enter和/或空格键上运行函数。我试过
keyCode
charCode
key
which
keypress
keypup
keypdown
等等

我有一个文本节点,我可以通过使用:

.attr('role', 'button')
.attr('tabindex', '0')
.attr('focusable', 'true')
.on('click', sel)
.on('keypress', function(){if(key == 13 || key == 32){return sel}}) 
点击是完美的,选项卡可以工作,只是在使用空格和回车时不调用该函数


非常感谢您的帮助。

您必须使用
d3.event.keyCode
。根据,
d3.事件
…:

。。。在调用事件侦听器期间设置,并在侦听器终止后重置。使用此选项可访问标准事件字段

这里是一个基本的演示。点击“foo”、“bar”或“baz”对焦,然后按任意键并查看控制台:

var body=d3.选择(“body”);
var p=body.selectAll(空)
.数据([“foo”、“bar”、“baz”])
.输入()
.附加(“p”)
.attr('tabindex',0')
.attr('focusable','true')
.html(字符串)
.on(“按键”,功能(){
if(d3.event.keyCode==32 | | d3.event.keyCode==13){
log(“恭喜,你按了回车键或空格键!”)
}
})