2017-06-24 119 views
0

我想添加keybinds的例子灯箱(link) 但尽可能多我尝试我无法得到它的工作。任何有任何想法的人?W3学校灯箱jquery添加keybinds

我知道我必须在JS中做,而且我知道左侧和右侧的键码。但我对JS很新,我不明白我应该在哪里做这个功能,以及如何让它连接到next/prev。

然后我想能够让ESC作为一个关闭功能。 任何帮助,将不胜感激。

原始版本:

function plusSlides(n) { 
showSlides(slideIndex += n); 
} 

我的版本,到目前为止,不知道如果我在正确的轨道上:

function plusSlides(n) { 
      window.onkeydown = keydown; 
      function keydown(e){ 
       if(e.which == 37 && next) 
      } 
      showSlides(slideIndex += n); 
     } 

得到了原文的想法:

<a class="prev" onclick="plusSlides(-1)">&#10094;</a> 
     <a class="next" onclick="plusSlides(1)">&#10095;</a> 

从这个社会的帮助:

document.onkeydown = function (e) { 
    e = e || window.event; 
    if(e.keyCode === 39) { 
     showSlides(slideIndex +=1); 
    } else if(e.keyCode === 37) { 
     showSlides(slideIndex -=1); 
    } else if(e.keycode === 27) { 
     closeModal(); 
    } 

};

奇怪的是不会逃脱工作。我也尝试过使用keyup。

+0

“如果(e.which == 37 &&下一个)”应被后跟一个语句以及丢失。 –

回答

0
document.onkeydown = function (e) { 
    e = e || window.event; 
    if(e.keyCode === 39) { 
     showSlides(slideIndex +=1); 
    } else if(e.keyCode === 37) { 
     showSlides(slideIndex -=1); 
    } else if(e.keyCode === 27) { 
     closeModal(); 
    } 
}; 

这个工作,它不能进入​​一个函数,因为你想要捕获实际的按键一直。您还需要执行如下操作:确保模式在捕获按键之前实际打开,否则每次有人在您的站点上键入密钥时,此代码都会运行。

对于记录46为周期,44是逗号

+0

我已经尝试过您的版本,并且它仅适用于句点和逗号,但是当我尝试使用其他密钥时。不起作用。我已经尝试过37,39甚至27,但它不会工作。 – Cordux

+0

是的,抱歉,它应该已经onkeydown,现在试试。我编辑了答案 –

+0

现在37和39工作。但是,我将如何让Escape工作?它说Escape是27,但是当添加另一行代码时,如果语句完全相同,并将closeModel()作为事件27放入其中。不起作用。 – Cordux