2017-03-27 1 views
0

Ich sehe jede Antwort e.preventDefualt aber das hilft meinem Fall nicht. Mein Szenario ist, dass ich nur den scrollenden Teil der Leertaste verhindern möchte. Wenn ich e.preventDefault benutze, wird der Bildlauf gestoppt, aber es wird auch so gemacht, wenn ich in einem Textfeld kein Leerzeichen eingeben kann. Also habe ich mich gefragt, ob es eine Möglichkeit gibt, die Schriftrolle zu verhindern, aber tatsächlich den Platz eingeben kann.Wie kann ich nur scrollen, wenn die Leertaste gedrückt wird?

onWindowKeyDown = function(e){ 
    switch(e.which){ 
    case 9: 
     e.preventDefault(); 
    break; 
    case 32: 
     console.log(e); 
     e.preventDefault(); 
    break; 
    } 
}; 

ok so habe ich das versucht und ich habe stopPropagation und die sofortige Version auch versucht. Nur preventDefualt stoppt das Scrollen, aber wenn ich das Textfeld eintippe, kann ich keine Leerzeichen eingeben.

+0

Bitte lesen Sie [fragen]. Schlüsselbegriffe: "Suchen und forschen" und "Erkläre ... alle Schwierigkeiten, die dich daran gehindert haben, es selbst zu lösen". –

+0

Ich verbrachte den größten Teil des Tages damit, nach einer Antwort zu suchen und die Schwierigkeiten, die mich daran hinderten, es selbst zu lösen, wie gesagt, ist, dass jeder e.preventDefualt benutzt, aber das löst mein Problem nicht und ich habe niemanden gesehen sonst habe mein Problem entweder. – MrGameboy18

+0

Bitte zeigen Sie etwas Code mit was Sie versucht haben und was Ihre Forschung gezeigt hat. Wie es in dem Artikel heißt, mit dem ich verlinkt habe: * Gib einfach genug Code ein, damit andere das Problem reproduzieren können. Um Hilfe dabei zu bekommen, lesen Sie [mcve]. * –

Antwort

0

Ich habe keinen Code zu verweisen, um dies zu überprüfen, aber von der Spitze meines Kopfes glaube ich, dass Sie das Ziel von e überprüfen können, ob es ein Eingabeelement ist. Wenn e.target kein Eingabe- oder Texbereich ist, dann verhindere default?

+0

Nun, es ist nicht so, dass ich es manchmal gegen andere verhindern muss. Es ist, dass ich es brauche, um nur den scrollenden Teil zu verhindern. – MrGameboy18

0

Hallo, Sie könnten das Ziel des Ereignisses überprüfen, um zu überprüfen, ob das Element, das das Ziel des Tastendrucks war, das Eingabeelement war oder nicht. Wenn das Ziel der Hauptteil des HTML wäre, könnten Sie das Scrollen verhindern. hier ist ein Arbeits Link: https://jsfiddle.net/Lgyrn5bd/

window.onkeydown = function(e) { 
if(e.keyCode == 32 && e.target == document.body) { 
    e.preventDefault(); 
    return false; 
} 
}; 

Wenn Sie das Ziel der Veranstaltung (e.target) überprüfen würde die Zieleingabe/Textbereich sein, wenn Sie in einem Element eingeben wurden sonst wäre es der Körper sein. So können Sie die Leertaste halten, wenn Sie Eingabeelemente eingeben

+0

Das reparierte es, danke soviel, dass ich deine Antwort auch auffrischen würde, aber ich fing gerade auf Stapelüberlauf an. – MrGameboy18

+0

ich bin froh, ich könnte helfen :) – lhavCoder

Verwandte Themen