2017-07-19 2 views
1

Meine Website soll durch Drücken der Tasten auf der Tastatur navigiert werden: eingeben, \, +, -, etc ... Mein Problem ist, dass ich habe Textbereiche und Wenn ich diese Tasten drücke, wenn der textArea ausgewählt ist, arbeiten die Eingabe und die Tasten gleichzeitig.Beschränken Buttons mit Textbereichen

Ich dachte, der beste Weg, um dieses Problem anzugehen wäre eine Art Boolean zu verwenden. Ich habe versucht, if(!x.hasFocus()){ allow buttons to be used} zu verwenden, aber dieser Boolean gilt nur für das gesamte Dokument und nicht für bestimmte textAreas.

Also wie stelle ich sicher, dass die Funktion der Tastatur drücken nicht passiert, wenn der textArea ausgewählt ist?

+0

Überprüfen Sie, ob 'event.target' ein Textfeld ist, oder prüfen Sie, ob' document.activeElement' unter anderem ein Textfeld ist. –

+0

Ich sehe, was Sie mit activeElement und Ziel meinen, aber ich kenne keinen bestimmten booleschen Wert für "ist ein Textfeld". Haben Sie Vorschläge? – joe55460

+0

Boolean für "ist ein textArea" ist wie folgt: if (document.activeElement.tagName === "TEXTAREA") {// Dinge tun} – joe55460

Antwort

0

Sie können einen globalen Ereignis-Listener für alle Textfelder und Eingabefelder hinzufügen, nichts zurück, wenn diese Tasten

$(function(){ 
 
    $('textarea,input').on('keydown', function(e){ 
 
    if(e.keyCode===13 || e.keyCode==187 || e.keyCode===107 || e.keyCode===109 || e.keyCode==189 || e.keyCode==111 || e.keyCode===191) { 
 
     return false; 
 
    } 
 
    }) 
 
})

dann können Sie die richtigen Funktionen aufrufe für jede Taste gedrückt werden.

+0

Dies ist ein raffinierter Trick, aber ich möchte, dass der Benutzer verwenden kann diese Schlüssel beim Schreiben in den textArea:/ – joe55460

+0

Ich bin ein wenig verwirrt. Wenn Sie sich also auf ein Textfeld konzentrieren, möchten Sie diese Buchstaben nicht eingeben, aber Sie möchten auch, dass Benutzer sie eingeben können. –

+0

Ich entschuldige mich. Du hast die Frage beantwortet, die ich gepostet habe, aber ich habe sie falsch geschrieben. – joe55460