处理keydown和keydup[jquery]

处理keydown和keydup[jquery],jquery,audio,keydown,keyup,Jquery,Audio,Keydown,Keyup,有这样一个处理程序: <script> function start() { var audio = new Audio('URL'); audio.play(); } function stop() { var aud = document.getElementById(id); aud.pause(); aud.currentTime = 0; } $(document).keydown(function(e) { if (e.

有这样一个处理程序:

<script>
function start() {
    var audio = new Audio('URL');
    audio.play();
}

function stop() {
    var aud = document.getElementById(id);
    aud.pause();
    aud.currentTime = 0;
}

$(document).keydown(function(e) {
    if (e.keyCode == 81) {
        return start();
    }
});
$(document).keyup(function(event) {
    if (event.keyCode == 81) {
        return stop();
    }
});
</script>

函数start(){
var audio=新音频(“URL”);
音频播放();
}
函数停止(){
var aud=document.getElementById(id);
aud.pause();
aud.currentTime=0;
}
$(文档).keydown(函数(e){
如果(e.keyCode==81){
返回开始();
}
});
$(文档).keyup(函数(事件){
如果(event.keyCode==81){
返回停止();
}
});
脚本运行正常,但有点错误。
也就是说,它工作一秒钟,但随后开始重新运行递归函数start(),这就是为什么声音会相互影响。
我还需要使脚本只在按下时工作(再现声音),在释放时停止(典型合成器的原理)。

请帮我设置键盘向下键和键盘向上键。

谢谢大家!

我建议您设置新变量。类似于
soundIsPlaying=false
并在
start()
方法的开头将其设置为true,在
stop
方法的结尾将其设置为back-go
false
。您只想在声音尚未打开时开始播放声音

原因是,用户可能会更快地按下“开始”按钮,然后声音才能完成,并且您必须以某种方式检查是否必须现在启用音乐


另外,请确保将此变量设置在程序的上限范围内,以便在启动/停止方法调用之间保持其状态。

我不知道它会有什么帮助,但这是我的完整脚本。使用鼠标可以很好地工作,但键盘更难。我无法捕捉事件按键,事件按键。