[Javascript]:String in ein Textfeld einfügen

Hallo,

ich habe folgende Situation:

  • Textfeld mit Zeichen gefüllt.
  • DropDown Menü mit Strings
  • Submit-Button

So folgendes. Ich möchte nun wenn ich auf den Button klicke,
daß im Textfeld der String des aktuell ausgewählten DropDown-Menüs eingefügt wird.

WICHTIG aber: Der String soll da eingefüht werden wo der Cursor im Textfeld derzeit steht. Also nicht unbedingt immer am Anfang oder am Ende sond auch mal mittendrin.

Vielen Dank !!

Martin Berg

Hallo,

also ich glaube, dass das nicht so einfach mit JavaScript geht.
Es gibt zwar ein onchange-Ereignis, wenn ich mich nicht irre, aber wenn Du den Cursor in einer TextBox hin und her verschiebst, dann ergiebt sich ja noch keine Aenderung des element-values. Und onchange tritt nur dann ein, wenn sich Aenderungen am Inhalt ergeben. Einen Text aber vornen oder hinten zu ergaenzen sollte kein Problem darstellen, wenn Du Dir den value in einer extra Variablen merkst oder sie auch dynamisch immer aus der TextBox rausziehst.

CU

Hmm ja das ist klar…hilft mir aber nicht sonderlich weiter.

Wie könnte man das denn lösen ?

bye
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hab mal so ein bisschen rumgespielt, weil ich an nem ähnlichen Thema arbeite. Im wesentlichen macht die folgende Routine das, was du brauchst (zwar noch ein wenig mehr, weil ich das brauche aber du kannst dir das wichtige ja rausschnibbeln ;o):

var text="";
var cpos=0;
var kevent=false;

function kup() {
document.all.Test.innerHTML = cpos;
}
function kdown() {
kevent=true;
if( (window.event.keyCode == 37)&&(cpos>0) ) { cpos–; kevent=false; }
if( (window.event.keyCode == 39)&&(cpos<text.length) ) { cpos++; kevent=false; }
}
function kpress() {
if( kevent ) {
text = text + String.fromCharCode(window.event.keyCode);//
document.all.Text.innerHTML = text;//
cpos++;
kevent=false;
}
}
Juhuuu

Wichtig für dich ist cpos und die Handler onkeydown, onkeypress. Die zählen die Position mit, an der sich der Cursor befindet. Wenn du jetzt deinen String in das Textfeld pasten willst, brauchst du nur den Inhalt vom Eingabefeld an der Stelle zu splitten und deinen String reinzuhängen.

Ich hab das ganze allerdings noch nicht mit Netscape getestet. Da müßtest du glaube ich noch ein paar Anpassungen machen.

Gruß
Benky

Hallo,

Dein Loesungsverschlag ist sehr gut.
An sowas habe ich auch schon gedacht, aber leider bin ich immer wieder am Netscape gescheitert. Das Problem ist window.event, was im NS4 nicht geht. Man koennte hoechstens einen Funktionskopf schreiben wie folgt z.B.:

function kdown(evnt) {…}

Fuer den Netscape fragt man dann auf evnt.which ab.
Wenn die Event-Handler aber im TextArea stehen, dann liefert der Netscape keinen Parameter evnt. Den liefert er nur bei captureEvents:

if (window.document.layers) {
window.captureEvents(Event.KEYDOWN|Event.KEYPRESS|Event.KEYUP);
window.onkeydown=kdown;
window.onkeypress=kpress;
window.onkeyup=kup;
}

Das Event tritt aber immer auf, auch wenn der Focus nicht im Textfeld ist. Aussederm lassen sich Cursortasten (vor und zurueck) nicht unterscheiden, da evnt.which bei mir immer 0 liefert.

CU