plainTextJunkie: Textfeld mit GWT Defaultvalue und JavaScript Value

Hallo,

ich habe in HTML ein Textfeld [1], weise diesem Textfeld mit GWT [2] und JavaScript [3] jeweils einen Wert (Mein..Value) zu, und habe dadurch ein Textfeld mit einem defaultvalue="MeinGWTValue" und einem value="MeinJSValue".

In http://de.selfhtml.org/html/formulare/eingabe.htm#bereiche_vorbelegung@title=SelfHTML wird zwar gesagt, das "<textarea> kein value-Attribut" habe. Jedoch kann ich per JavaScript einen solchen value zuweisen [3] und FireBug zeigt mir auch beide values als 'defaultvalue' und 'value' an.

[1] Textfeld sieht wie folgt aus:
<textarea id="TextAreaName" name="TextAreaName" rows="3"></textarea>

[2] GWT Zuweisung als Java Code:
Document.get().getElementById("TextAreaName").setInnerHTML( "MeinGWTValue" );

[3] JavaScript Code innerhalb der HTML-Seite:

var textArea = document.forms['FormularName'].elements['TextAreaName'];  
textArea.value= "MeinJSValue";

Mach ich gundsätzlich etwas falsch? Weil ich zum einen nicht alle JavaScriptings der HTML-Seite in GWT nachprogrammieren will, aber dennoch das Textfeld auf beiden Wegen ändern will.

Meine Frage, da ich gerade etwas auf dem Schlach stehe:
Gibt es in JavaScript eine Lösung dem Textfeld einen defaultvalue zuzuweisen, den ich auch wieder in GWT ändern kann?

Vielen Dank...
  ...plaintextjunkie

  1. Hallo,

    Im Prinzip hat ein textarea-Elementknoten die Eigenschaften value und defaultValue, die du lesen und beschreiben kannst. Den defaultValue zu ändern, macht aber i.d.R. wenig Sinn, denn defaultValue spiegelt den Wert wieder, der am Anfang im HTML-Code des Dokuments steht.
    Was genau ist deine Frage und geht es dir um JavaScript oder GWT/Java? Ich weiß nur grob, wie GWT arbeitet. Dein JavaScript-Beispiel ist jedenfalls korrekt, während setInnerHTML im Java-Code eher unpassend klingt (innerHTML ist eine andere JS-Eigenschaft als value).

    Mathias

    1. Hallo,

      Danke erstmal für die Antwort.

      Mir geht es genaugenommen darum, dass ich jeweils aus JavaScript und GWT/Java/DOM einem Textfeld den aktuellen Wert zuweisen möchte, dies soll einem einzigen Wert zugewiesen werden und nicht in zwei verschiedenen Werten gespeichert werden.

      FYI und zum Verständnis in GWT programmiere ich in Java, das von GWT intern in JavaScript übersetzt wird und clientseitig ausgeführt wird, also haben wir es IMHO mit JavaScript und GWT-erzeugtem-JavaScript zu tun.

      In GWT/Java kann ich recht einfach über das DOM auf die HTML Seite und den Elementen zugreifen. Über das DOM wiederum kann ich leider nur per setInnerHTML und setInnerText auf das Textfeld zugreifen. Diese Methoden verändern nur den defaultValue. Andere Zugriffsmethoden sind mit nicht bekannt.
      Alternative muß ich die JavaScriptFunktionen der HTML-Seite in GWT nachprogrammieren, da mir auch kein casting des DOM-Elemnts in ein GWT-Widget bekannt ist.

      Im Prinzip hat ein textarea-Elementknoten die Eigenschaften value und defaultValue, die du lesen und beschreiben kannst.

      Ist es dann nicht angeraten die angesprochene Stelle in SelfHTML zu ändern, da sie ja nachweislich (Deiner Aussage und den praktischen Erfahrungen nach) nicht richtig ist?

      Wie kann ich denn per JavaScript den defaultValue ändern?

      thx...plaintextjunkie

      1. Im Prinzip hat ein textarea-Elementknoten die Eigenschaften value und defaultValue, die du lesen und beschreiben kannst.
        Ist es dann nicht angeraten die angesprochene Stelle in SelfHTML zu ändern, da sie ja nachweislich (Deiner Aussage und den praktischen Erfahrungen nach) nicht richtig ist?

        In SELFHTML steht: Ein textarea-Element hat kein value-Attribut. Das ist korrekt, es geht da um HTML. Wenn man in HTML den Wert einer Textarea setzen will, schreibt man ihn einfach ins Element.

        Ich habe etwas anderes gesagt, nämlich dass man in JavaScript auf den Wert eines textarea-Formularfeldes über die Eigenschaft value des entsprechenden DOM-Elementknotens zugreifen kann. Das ist auch in SELFHTML dokumentiert:
        http://de.selfhtml.org/javascript/objekte/elements.htm#default_value
        http://de.selfhtml.org/javascript/objekte/htmlelemente.htm#textarea

        Wie kann ich denn per JavaScript den defaultValue ändern?

        document.getElementById("formularfeld-mit-id").defaultValue = "wert";

        Aber wie gesagt verstehe ich den Sinn davon nicht, auf der Ebene von JavaScript gibts keinen Unterschied mehr zwischen value und defaultValue, beides setzt bei einem leeren Feld den Wert.

        value setzen:

        document.getElementById("formularfeld-mit-id").value = "wert";

        Mathias

        1. Moin moin nochmal,

          Danke auch für die Links und die Erläuterungen. Das hab ich jetzt verstanden, und werde Dir nicht nocheinmal andere Aussagen unterstellen. Für das besser Verständnis wäre jedoch ein kleiner Hinweis auf diesen kleinen, aber feinen Unterschied (zw. Attribute und Property) angebracht, verstehe aber das mensch es dann bei (fast) jedem Tag dazuschreiben könnte...

          Aber wie gesagt verstehe ich den Sinn davon nicht, auf der Ebene von JavaScript gibts keinen Unterschied mehr zwischen value und defaultValue, beides setzt bei einem leeren Feld den Wert.

          Offenbar gibt es in diesem Zusammenspiel (GWT+JS+DOM) diesen Unterschied, der auch mich verblüfft.

          Also ich hab die richtigen Methoden in GWT gefunden und kann nun über die
          unten aufgeführte Auswahl per DOM auf die jeweils gesetzten Werte zugreifen (auch defaultValue und value).

          Für mich hat sich damit dieses Problem gelöst, da ich sowohl den bisherigen Wert, als auch die Cursorposition aus dem gegebenen Textfeld per DOM auslesen kann und in GWT weiterverarbeiten.

          Schoenen Tag noch und danke für den Fisch...

            
          // Zugriff per GWT/Java und DOM auf die Werte der Textarea  
          //  
          // Attribute der Textarea (nicht alle benutzt & wohl unvollständig)  
          System.out.println("givenTextarea: getAttribute(id): " + oldTextarea.getAttribute("id") );  
          System.out.println("givenTextarea: getAttribute(name): " + oldTextarea.getAttribute("name") );  
          System.out.println("givenTextarea: getAttribute(type): " + oldTextarea.getAttribute("type") );  
          System.out.println("givenTextarea: getAttribute(wrap): " + oldTextarea.getAttribute("wrap") );  
          System.out.println("givenTextarea: getAttribute(cols): " + oldTextarea.getAttribute("cols") );  
          System.out.println("givenTextarea: getAttribute(rows): " + oldTextarea.getAttribute("rows") );  
          System.out.println("givenTextarea: getAttribute(style): " + oldTextarea.getAttribute("style") );  
          // Values: defaultValue (between the start&end tag) value (official non existence)  
          System.out.println("givenTextarea: getPropertyString(value): " + oldTextarea.getPropertyString("value") );  
          System.out.println("givenTextarea: getPropertyString(defaultValue): " + oldTextarea.getPropertyString("defaultValue") );  
          // cursorposition selectionStart und selectionEnd  
          System.out.println("givenTextarea: getPropertyInt(selectionStart): " + oldTextarea.getPropertyInt("selectionStart") );  
          System.out.println("givenTextarea: getPropertyInt(selectionEnd): " + oldTextarea.getPropertyInt("selectionEnd") );