Javascript 如何毫不延迟地在输入区的按键上播放声音?

Javascript 如何毫不延迟地在输入区的按键上播放声音?,javascript,jquery,keydown,onkeydown,Javascript,Jquery,Keydown,Onkeydown,我的目标是播放类似于手机键盘工作方式的点击声音文件,但我在这里找到的每种方法似乎都会延迟声音文件的重叠,即当我在搜索字段中键入时,声音有时会根据我键入的速度播放 我正在使用以下代码: $("#search") // loop each menu item .each(function(i) { if (i != 0) { // only clone if more than one needed $("#beep") .clone() .a

我的目标是播放类似于手机键盘工作方式的点击声音文件,但我在这里找到的每种方法似乎都会延迟声音文件的重叠,即当我在搜索字段中键入时,声音有时会根据我键入的速度播放

我正在使用以下代码:

$("#search") // loop each menu item
  .each(function(i) {
    if (i != 0) { // only clone if more than one needed
      $("#beep")
        .clone()
        .attr("id", "beep-" + i)
        .appendTo($(this).parent()); 
    }
    $(this).data("beeper", i); // save reference 
  })
  .keydown(function() {
    $("#beep-" + $(this).data("beeper"))[0].play();
  });
$("#beep").attr("id", "beep-0"); // get first one into naming convention

但是这种方法有时会导致单击,有时不会。

如果您的嘟嘟声很短,并且如果您
暂停()
并将
当前时间
重新定位为零。。。它似乎工作得很好

$("#search").on("keyup",function(){
  //console.log("ok");
  $("#beep")[0].pause();
  $("#beep")[0].currentTime=0;
  $("#beep")[0].play();
});

在音频文件的开头暂停和替换就是诀窍。否则,如果和事件发生在文件结束之前,则文件已在播放。。。这给人一种“跳过”事件的印象