Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Tastatursteuerung im Textfeld deaktivieren

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Tastatursteuerung im Textfeld deaktivieren

    Hallo zusammen,

    zwecks Komfort habe ich auf eine Tastatursteuerung für die Galerie bestanden. Das Problem ist nur, ich bin quasi eine Null in Javascript, bin darin nicht wirklich gut. Mit Müh und Not habe ich mir das folgende Script zusammenkratzen können. Es ist im Header angeordnet. Damit werden verschiedene Links innerhalb der Seite angesprochen und es wird zusätzlich einen Ladebalken aufgeblendet:

    Code:
    <script type="text/javascript">
    document.onkeydown = function(event) {
    	//Take key codes from: http://www.mediaevent.de/javascript/onkeydown.html
    	if(event.keyCode == 39) {
    		Load_Bar.style.visibility='visible';
    		Load_Bar.src='../images/progress_bars/bar_15.gif';
    		window.location.href = document.getElementById('MoveNext').href;
    		}
    	if(event.keyCode == 37) {
    		Load_Bar.style.visibility='visible';
    		Load_Bar.src='../images/progress_bars/bar_15.gif';
    		window.location.href = document.getElementById('MoveLast').href;
    		}
    	if(event.keyCode == 17) {
    		window.location.href = document.getElementById('MoveDownload').href;
    		}
    	}
    </script>
    Damit kann man vor / zurück (Pfeiltaste li / re) springen bzw. das Bild per Taste (strg) herunterladen. Das funktioniert soweit auch einwandfrei. Nur steht die Sache in Konflikt mit dem Kommentarfeld darunter:

    PHP-Code:
    echo "<h4>Neuen Kommentar erstellen:</h4>\n";
    echo 
    "<textarea maxlength=\"255\" name=\"New_Usercomment\" cols=\"40\" rows=\"3\"></textarea>\n";
    echo 
    "<br />\n";
    echo 
    "<input type=\"submit\" name=\"Post_New_Usercomment\" value=\"Speichern\" />\n"
    Bewegt man sich nämlich darin mit den Pfeiltasten umher, wechselt die Galerie das Foto und verwirft den Kommentar, der ja noch nicht abgeschickt werden konnte.

    Wie kann ich es schaffen, dass die JS-Funktion oberhalb deaktiviert wird, während das Kommentarfeld aktiv ist? Dann könnte ich z.B. auch noch mehr funktionen auf andere Tasten legen. "D" finde ich persönlich z.B. auch logischer für "Download" als die STRG-Taste, auf die ich ausweichen musste.
    Ich habe deswegen eine Weile mit onfocus / onblur und einer umfassenden IF-Bedingung um das Javascript herum experimentiert, aber das hat nicht so recht funktionieren wollen. Hinterher hat die Steuerung auch nicht mehr funktioniert. Ich habe es also verworfen. Kann mich auch nicht mehr so recht erinnern, wie ich das angestellt habe.

    Für einen kleinen Tipp, so als Hilfestellung, wäre ich echt dankbar!

    Liebe Grüße,
    Don

  • #2
    Was soll das bringen?
    Das Problem ist nur, ich bin quasi eine Null in Javascript
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      Unhilfreiche Antwort FTW..

      Kommentar


      • #4
        Okay, hab mich nochmal selbst hingesetzt, stundenlang gegooglet und probiert. Ergebnis: Funktioniert einwandfrei unter Firefox und Chromium. Die Links werden nur angesteuert, wenn kein Cursor im Textfeld ist. Jetzt muss ich nur noch die Key-Events neu anpassen, jetzt wo es funzt.

        Code:
        <script type="text/javascript">
        document.onkeydown = function(event) {
        	//Take key codes from: http://www.mediaevent.de/javascript/onkeydown.html
        	var actelm = document.activeElement.tagName.toLowerCase();
        	if(actelm != 'textarea' && actelm != 'text' && actelm != 'input') {
        		if(event.keyCode == 39) {
        			Load_Bar.style.visibility='visible';
        			Load_Bar.src='../images/progress_bars/bar_15.gif';
        			window.location.href = document.getElementById('MoveNext').href;
        			}
        		if(event.keyCode == 37) {
        			Load_Bar.style.visibility='visible';
        			Load_Bar.src='../images/progress_bars/bar_15.gif';
        			window.location.href = document.getElementById('MoveLast').href;
        			}
        		if(event.keyCode == 17) {
        			window.location.href = document.getElementById('MoveDownload').href;
        			}
        		}
        	}
        </script>
        Grüße,
        Don

        Kommentar


        • #5
          Und du glaubst der User peilt sofort das, was du zusammengenagelt hast. Ein misslungener Versuch Usability zu gewährleisten.

          Kommentar


          • #6
            Jo, Herr Professor Doktor Doktor, dann schießen Sie mal los wie es richtig gestellt aussehen würde ..

            Kommentar

            Lädt...
            X