Hasi: JavaScript: Zeichen in Tastaturpuffer ersetzen bzw. löschen

************************************************************

JavaScript: Zeichen in Tastaturpuffer ersetzen bzw. löschen

************************************************************

Helau! ;)

Durch Googlen hab ich leider nichts Brauchbares dazu gefunden:

Ich suche eine Routine, die das gedrückte Zeichen (sofern vorhanden ;) )
im Tastaturpuffer durch ein anderes ersetzt.

Der Eingabebereich:
_________________________________________________________________________

<textarea name="meinEingabefeld" cols="80" rows="10" onkeydown="tasteneingabe(event)"></textarea><font color="#000000">

_________________________________________________________________________

Die bisherige JavaScript-Funktion:
_________________________________________________________________________

function tasteneingabe(e)
{
var keynum;
var keychar;
var numcheck;

		if(window.event) // IE  
		{  
				keynum = e.keyCode  
		}  
		else if(e.which) // Netscape/Firefox/Opera  
		{  
				keynum = e.which  
		}  
	  
	  zeichen = String.fromCharCode( keynum );  
	  
	  if ( zeichen == "A" )  
	  {  
	  		sendkey('X'); // nur mal als Beispiel  
	  }  

}

function sendkey(val)
{
  document.meinName.meinEingabefeld.value += val;
  document.meinName.meinEingabefeld.focus();
}
_________________________________________________________________________

Problem hierbei noch:

Momentan wird sowohl das auszutauschende als auch das originale Zeichen ausgegeben.

Jetzt bräuchte ich also eine Routine, die

* entweder das originale Zeichen aus dem Tastaturpuffer entfernt

oder

* das Zeichen im Tastaturpuffer ersetzt

Wer hat ein Code-Beispiel oder einen Hinweis?

Karnevalsgrüße
Hasi

  1. Liebe(s) Hasi,

    Jetzt bräuchte ich also eine Routine, die
    * entweder das originale Zeichen aus dem Tastaturpuffer entfernt
    oder
    * das Zeichen im Tastaturpuffer ersetzt

    der Browser, der einem pöhsen JS soetwas erlaubt ist für mich die Definition eines Sicherheitslecks auf meinem Computer!

    Ich hoffe für uns alle, dass Dein Problem sich nicht über Manipulationen am Tastaturpuffer lösen lässt!

    Vielleicht ist ein anderer Ansatz für die Lösung Deines eigentlichen Problems zielführender? Du könntest z.B. über das onchange- oder onkeyup-Event den vorhandenen Inhalt prüfen und gegebenenfalls "korrigieren"...

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. n'abend,

      der Browser, der einem pöhsen JS soetwas erlaubt ist für mich die Definition eines Sicherheitslecks auf meinem Computer!
      Ich hoffe für uns alle, dass Dein Problem sich nicht über Manipulationen am Tastaturpuffer lösen lässt!

      Falsche Wortwahl des Fragestellers. Daran brauchst du dich doch nicht aufhängen. Was der Hilfesuchende erreichen will ist klar ersichtlich. Deine (überhebliche) »Ich weiß was du willst, du hast das aber falsch formuliert« Antwort finde ich hier durchaus deplatziert.

      Vielleicht ist ein anderer Ansatz für die Lösung Deines eigentlichen Problems zielführender? Du könntest z.B. über das onchange- oder onkeyup-Event den vorhandenen Inhalt prüfen und gegebenenfalls "korrigieren"...

      Hier werden wir doch schon zielstrebiger. schön.

      onchange-Events werden erst beim Verlassen (vor/nach blur()) des Eingabeelements gefeuert. Diese Variante fällt somit flach.

      element.onkeyup = function(e)  
      {  
        e = e || window.event;  
        var code = e.keyCode || e.which,  
            char = String.fromCharCode( code );  
        
        switch( char )  
        {  
          case 'A':  
            this.value += 'Z';  
          break;  
        }  
        
        // if preventDefault exists run it on the original event  
        if ( e.preventDefault )  
          e.preventDefault();  
        
        // otherwise set the returnValue property of the original event to false (IE)  
        return false;  
      };
      

      Wenn du nicht willst, dass das vom Benutzer eingegebene Zeichen in das Eingabefeld geschrieben wird, musst du das Standardverhalten des Browsers abbrechen. Siehe die letzten Zeilen der Funktion.

      Du solltest dich hier vermutlich auch noch um die Position des Cursors kümmern (siehe Text an Cursorposition einfügen). Andernfalls wird dein ersetztes Zeichen immer am Ende angehängt.

      weiterhin schönen abend...

      --
      #selfhtml hat ein Forum?
      sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|