Jacks überschäumende galle: 2 JS Fragen: Focus und Mausposition

HI

Ich habe da gleich mal 2 fragen ('Hoho.. ja iss denn schon weinachten?')

Und zwar betrifft meine erste Frage den focus() effect.
Mein Problem ist folgendes:
Meine Felder haben teilweise eine Vorbelegung mit einem text der beim Drübergehen (OnFocus) weggeht (ein beispiel ist das Suchfeld bei golem.de).
Das Klappt sehr gut. Leider habe ich das problem dass wenn ich mit meinem JavaScript ein BB-Code einfügen möchte, er mir diesen vorgelegten text nicht wegmacht.

Meine Funktion:

function MM_insertString(Form,Field,String) {
var FormField=Form+'_'+Field;
var revisedMessage;
var currentMessage;
document.forms[Form].elements[FormField].focus();
currentMessage = document.forms[Form].elements[FormField].value;
alert(currentMessage);revisedMessage = currentMessage+" "+String+" ";
document.forms[Form].elements[FormField].value=revisedMessage;
}

Wie Ihr seht mache ich den FOCUS vor dem einfügen und dem auslesen, dennoch nimmt er ihn mit.
Ein Test wo ich nach dem Focus mal ein alert mit dem value ausgab bestätigte mein Problem: Er macht den Focus aber verhält sich nicht wie das Ich-Gehe-Manuell-In-das-Feld-FOCUS. =/

Das finde ich sehr komisch?

Frage 2:
Schliesst quasi an Frage 1 an:
Und zwar würde ich gerne den BB-Code string an der Stelle einfügen wo der mauszeiger im text steht. In Foren geht das oft, doch selber bin ich trotz suchen noch nicht auf den trichter gekommen.

Hilfe wäre köstlich =)

ciao

  1. Hallo,

    Meine Felder haben teilweise eine Vorbelegung mit einem text der beim Drübergehen (OnFocus) weggeht (ein beispiel ist das Suchfeld bei golem.de).
    Das Klappt sehr gut. Leider habe ich das problem dass wenn ich mit meinem JavaScript ein BB-Code einfügen möchte, er mir diesen vorgelegten text nicht wegmacht.

    function MM_insertString(Form,Field,String) {

    Ein Parameter sollte nicht »String« heißen. String ist ein vordefiniertes Objekt, das nicht überschrieben werden sollte.

    var FormField=Form+'_'+Field;
    var revisedMessage;
    var currentMessage;
    document.forms[Form].elements[FormField].focus();
    currentMessage = document.forms[Form].elements[FormField].value;
    alert(currentMessage);revisedMessage = currentMessage+" "+String+" ";
    document.forms[Form].elements[FormField].value=revisedMessage;
    }

    Ich verstehe deine Frage nicht ganz. Es ist anscheinend ein onfocus-Event registriert, bei dem das Feld geleert wird (<input type="text" value="Vorbelegung" onfocus="this.value='';"> oder ähnlich mit textarea). Wenn du nun die focus()-Methode aufrufst, wird der onfocus-Event nicht gefeuert und der zugehörige Handler nicht ausgeführt. Du müsstest also in deiner Funktion überprüfen, ob der aktuelle Wert der Vorbelegung entspricht. Dazu kannst du value und defaultValue vergleichen. Wenn sie identisch sind, leerst du das Formularfeld bzw. setzt currentMessage auf einen leeren String. Dann steht nach dem Ausführen der Funktion der BBCode im Feld ohne die Vorbelegung davor.

    Und zwar würde ich gerne den BB-Code string an der Stelle einfügen wo der mauszeiger im text steht. In Foren geht das oft, doch selber bin ich trotz suchen noch nicht auf den trichter gekommen.

    http://aktuell.de.selfhtml.org/tippstricks/javascript/bbcode/ hilft dir vielleicht weiter.

    Mathias

    1. Das Formfield hat den handler

      onFocus="MM_clearField('".$form_NAME."','".$form_name."','".$form_desc."');"

      Ich verbinde es mit PHP und daher sind die Inhalte Variabeln.

      Wenn ich jetzt im JavaScript im Kopf sage er solle auf dieses Formfield den Focus setzen führt er daher diese Zeile aus in dem er den Form-Namen Form-Field-Namen und den Vorbelegten Text übergibt...

      Die ClearField-Funktion ist folgende:

      function MM_clearField(Form,Field,ExeptTXT) { //v1.0
      var FormField=Form+'_'+Field;
       if(document.forms[Form].elements[FormField].value==ExeptTXT){
       /* alert("CLEAR FIELD"); */
       document.forms[Form].elements[FormField].value='';
       document.forms[Form].elements[FormField].style.color='#000000';
       }else if(document.forms[Form].elements[FormField].value==''){
       /* alert("RESET FIELD"); */
       document.forms[Form].elements[FormField].value=ExeptTXT;
       document.forms[Form].elements[FormField].style.color='#5981A4';
       }else{
       document.forms[Form].elements[FormField].style.color='#000000';
       }
      }

      Wenn ich die Commentare beim ALERT wegnehme und das alert zulasse klappt es komischerweise. Mache ich sie weg (kommentier ich sie) geht es nichtmehr... Das verstehe ich nicht.

      Kasus Knakus unbekannt...

      ciao