Jan: Zwei Tasten (Shift + Enter) gleichzeitig abfangen

Hallo zusammen!

Ich hab ein kleines Problemchen, und zwar schreibe ich gerade ein kleines CMS. Im Formular für das Einstellen einer neuen Seite kann man für den Inhalt auch HTML-Tags eingeben, auch die Umbrücke wollte ich so machen, dass man sie mit "<br/>" in den Inhalt schreiben muss - ich will sie nicht nachher mit nl2br() umwandeln.

Ich sag lieber gleich, Javascript ist nicht meine Stärke da ich es kaum verwende, SuFu hat auch nichts gebracht bei meinem Problem (Google auch nicht).

Und zwar wollte ich es so machen, dass beim Druck auf die Enter-Taste ein normaler Umbruch eingefügt wird (ist ja ohnehin so), dass aber beim Druck von Enter WÄHREND die Shift-Taste gedrückt ist zunächst ein "<br/>" in die Textarea kommt, und danach ein normaler Umbruch. So müsste man nicht immer das <br/> von Hand eingeben, wäre viel komfortabler.

So sieht das Javascript-Schnipsel bisher aus:

  
function Tastendruck (Ereignis) {  
  if (!Ereignis)  
    Ereignis = window.event;  
  
  if (Ereignis.shiftKey)  
  {  
    alert("Jetzt würde ein <br/> eingefügt...");  
  }  
  
}  
  
document.onkeypress = Tastendruck;  
  

Das hab ich so aus dem Internet, funktioniert auch prima. Aber wie kann ich als zusätzliche Bedingung noch einfügen, dass dabei Enter gedrückt sein muss? Habs schon irgendwie mit KeyCode versucht, aber hab das nicht hinbekommen.

Ich hoffe, ihr könnt (und wollt ;-) ) mir helfen =)

LG Jan

  1. Hallo!

    Du willst das keydown-Event der Taste 17 [Strg], dann das keyup-Event von Taste 13 [Enter] ohne davorliegendes keyup-Event der Taste 17 messen. Dazu musst Du mehrere Events belegen:

      
    window.strgIsPressed = false;  
      
    function keydownHandler(ev) {  
       ev = ev || window.event;  
       var key = ev.which || ev.keyCode || ev.charCode;  
       if (key === 17) { window.strgIsPressed = true; }  
       else if (window.strgIsPressed && key === 13) { alert('Strg-Enter pressed'); }  
    }  
      
    function keyupHandler(ev) {  
       ev = ev || window.event;  
       var key = ev.which || ev.keyCode || ev.charCode;  
       if (key === 17) { window.strgIsPressed = false; }  
    }
    

    Den Rest solltest Du alleine hinbekommen.

    Gruß, LX

    --
    RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen.
    1. Den Rest solltest Du alleine hinbekommen.

      Gruß, LX

      Danke dir, du warst mir eine sehr große Hilfe, hab's hinbekommen!
      Vielen Dank!

      Sieht jetzt so aus:

        
      window.strgIsPressed = false;  
        
      function keydownHandler(ev) {  
         ev = ev || window.event;  
         var key = ev.which || ev.keyCode || ev.charCode;  
         if (key === 17) { window.strgIsPressed = true; }  
         else if (window.strgIsPressed && key === 13) { insert('<br/>\r\n', ''); }  
      }  
        
      function keyupHandler(ev) {  
         ev = ev || window.event;  
         var key = ev.which || ev.keyCode || ev.charCode;  
         if (key === 17) { window.strgIsPressed = false; }  
      }  
        
      document.onkeydown = keydownHandler  
      document.onkeyup = keyupHandler  
      
      

      Schön, wie einem hier schnell und kompetent geholfen wird... bin echt beeindruckt ;-)