Thomas L: css-Eigenschaften von textarea bei onfocus verändern

Hallo Forumler,

ich habe folgendes Formular:

<form name="feedback" action="/kontakt.php" method="post" enctype="multipart/form-data">
Ihre Nachricht:<br>

<textarea id="eingabe" style="width:300px;" class="inactive" onFocus="javascript:setCSSneu()" onBlur="javascript:setCSSalt()" name="eingabe" rows="6" cols="40"></textarea><br><br>

<input name="submit" class="submit" type="submit" value="Absenden">&nbsp;
<input name="loeschen" class="submit" type="submit" value="Daten zur&uuml;cksetzen">
</form>

Hier hatte ich über

function setCSSneu() { event.srcElement.className='active'; }
function setCSSalt() { event.srcElement.className='inactive'; }

die Klassennamen geändert. Leider funzte dies nur im IE.
Somit habe ich dies probiert:

function setCSSneu() {
 var active;
 active = eval(document.getElementById("eingabe"));
 active.style.backgroundColor = "#FFFFAA";
 active.style.border = "1px dashed #AAA";
 active.style.color = "#000099";
 }
function setCSSalt() {
 var inactive;
 inactive = eval(document.getElementById("eingabe"));
 inactive.style.backgroundColor = "#FFFFFF";
 inactive.style.border = "1px dashed #000";
 inactive.style.color = "#000000";
 }

Dies scheint nun zwar zu klappen, aber geht dies vielleicht auch kürzer?

function setCSSneu() { document.getElementsByName("eingabe")[0].class = active; }
function setCSSalt() { document.getElementsByName("eingabe")[0].class = inactive; }

funzt jedenfalls nicht.
Weiß hier jemand einen Rat???
Vielen Dank schon mal für Eure aufschlussreichen Antworten und viele Grüße.

Thomas L.

  1. Hallo

    <textarea id="eingabe" style="width:300px;" class="inactive" onFocus="javascript:setCSSneu()" onBlur="javascript:setCSSalt()" name="eingabe" rows="6" cols="40"></textarea><br><br>

    onFocus="setCSSneu();" genauso auch onblur

    ich würde es fast so lösen:

    <style>
    .active{border:1px solid black}
    .inactive{border:0}
    </style>

    <script>
    function setCSS(me){
      me.className=(me.className == 'active')?'inactive':'active';
    }
    </script>

    <textarea onfocus="setCSS(this);" onblur="setCSS(this);"></textarea>

    funktioniert mit ie und ff

    --
    no strict;
    no warnings;
    man google
    1. Hallo

      Danke, für die prompte Antwort!
      Werde es gleich mal ausprobieren.
      Also noch mal vielen Dank!

      Thomas L.

  2. Hi,

    <textarea id="eingabe" style="width:300px;" class="inactive" onFocus="javascript:setCSSneu()" onBlur="javascript:setCSSalt()" name="eingabe" rows="6" cols="40"></textarea><br><br>

    Schmeiß das javascript: aus den Eventhandlern raus.

    function setCSSneu() { event.srcElement.className='active'; }
    function setCSSalt() { event.srcElement.className='inactive'; }

    Hier wußtest Du also noch, wie das class-Attribut angesprochen wird.

    function setCSSneu() { document.getElementsByName("eingabe")[0].class = active; }
    function setCSSalt() { document.getElementsByName("eingabe")[0].class = inactive; }

    Hier weißt Du plätzlich nicht mehr, wie das class-Attribut angesprochen wird.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo,

      Also so hier?

      <textarea id="eingabe" style="width:300px;" class="inactive" onFocus="setCSSneu()" onBlur="setCSSalt()" name="eingabe" rows="6" cols="40"></textarea>

      function setCSSneu() { document.getElementsByName("eingabe")[0].className = active; }
      function setCSSalt() { document.getElementsByName("eingabe")[0].className = inactive; }

      Funzt aber trotzdem nicht!?
      Was ist daran denn verkehrt?

      Fragt sich
      Thomas L.

      PS: Trotzdem erst mal vielen Dank für Deine aufschlussreichen Hinweise!