2016-09-19 5 views
0

Ich versuche, einen Tastendruck innerhalb einer Szene zu erkennen, die ein div mit der ID "Welt" ist Ich habe diesen Code, der sollte funktionieren, aber es tut nicht. Hier ist sie:Detektieren Sie einen Tastendruck in einer three.js Szene mit jquery

$('world').keyup(function(e){ 
    console.log('keyup'); 
    if(e.keyCode == 46 || 8) { 
     if(selectedWood != null){ 
      array.splice(index, object.findIndex(selectedWood)); 
     } 
    } 
}); 

Antwort

1

Die erste Ausgabe ist, müssen Sie '#' ein Element mit ID wählen, so $ ('# Welt') statt ('Welt').

Das zweite Problem ist e.keyCode wird auf einigen Browsern aber nicht alle funktionieren. Da Sie jQuery verwenden, können Sie zuverlässig verwenden e.which:

if(e.which == 46 || e.which == 8) 
+1

Sollte es nicht sein 'if (e.which == 46 || e.which == 8)'? 8 wird immer truthy bewerten. – showdev

0

Als Ihr Ansichtsfenster div nicht (im Gegensatz zu einem Texteingabefeld) fokussiert werden kann, Ihre Methode erkennt keine keyup. Stattdessen müssen Sie den Ereignis-Listener window anbringt:

$(window).keyup(function (event) { 
    ... 
}); 

Wenn Sie <input> Felder oder <textarea> Elemente auf Ihrer Website haben, werden Sie wahrscheinlich spezifisch für diese 3D-Szene hören nicht wan't Ereignisse bei der Eingabe von Text. So könnten Sie den Code erweitern:

$(window).keyup(function (event) { 
    if(['INPUT', 'TEXTAREA'].indexOf(event.target.tagName) !== -1) return; 
    ... 
}); 
Verwandte Themen