tiggerle: validation error - javascript textarea onKeyDown

Hallo,

ich bin bemüht um sauberen code, allerdings noch nicht so erfahren in xhtml wie in html. daher bin ich nun verwundert, wie ich das "korrekt" hinbekomme:

<form>
[...]
<textarea class="pictextstr" name="pictext_str" rows="" cols="" wrap="physical" onKeyDown="textCounter(this.form.pictext_str,this.form.remLen,50,this.form.pictext);" onKeyUp="textCounter(this.form.pictext_str,this.form.remLen,50,this.form.pictext);"></textarea>
[...]
</form>

erstmal gibt es "wrap" eigentlich nicht ... aber gut, verzichten kann ich wohl auch nicht drauf, weil sonst wird ja der text nicht automatisch umgebrochen in FF/IE...

aber was nun tun mit dem fehler:
there is no attribute "onKeyDown".

Gibt es eine "richtige" Möglichkeit, js hier einzubauen? der text, der in die textarea eingegeben wird, soll automatisch in ein anderes feld dupliziert werden ...

besten dank für eure ratschläge!

  1. Hallo tiggerle,

    there is no attribute "onKeyDown".

    schon mal onkeydown probiert? Oder noch besser, den Handler per Javascript gesetzt?

    Gruß, Jürgen

    1. schon mal onkeydown probiert? Oder noch besser, den Handler per Javascript gesetzt?

      danke für den hinweis, das wars!
      bin mit javascript nicht so bewandert ... wie würde das aussehen, was du meinst?

      danke!

      1. Hallo tiggerle,

        schon mal onkeydown probiert? Oder noch besser, den Handler per Javascript gesetzt?

        danke für den hinweis, das wars!
        bin mit javascript nicht so bewandert ... wie würde das aussehen, was du meinst?

        du verschaffst dir über eine der getElement(s)By-Methoden Zugriff auf das HTML-Element und setzt dann den Handler über ...onxxx=Handlername_ohne_Klammern. Da das Element erst nach dem Laden der Seite verfügbar ist, machst du das im onload-Handler des Dokuments:

        Im Scriptteil im Head oder auch in einer externen JS-Datei steht dann u.A.

        var keyhandler = function() {  
          alert(this.value);  
        }  
          
        window.onload = function() {  
          document.getElementById("X").onkeydown = keyhandler;  
        }
        

        und im body:

        <textarea cols="100" rows="10" id="X"></textarea>

        Gruß, Jürgen

  2. Hi,

    erstmal gibt es "wrap" eigentlich nicht ... aber gut, verzichten kann ich wohl auch nicht drauf, weil sonst wird ja der text nicht automatisch umgebrochen in FF/IE...

    Wie meinen?

    Die meisten Formulare, die ich kenne, verwenden kein wrap-Attribut, und haben trotzdem keine Probleme mit Umbruechen.

    aber was nun tun mit dem fehler:
    there is no attribute "onKeyDown".

    Gibt es eine "richtige" Möglichkeit, js hier einzubauen?

    Ja, klein schreiben.
    Oder vielleicht besser noch den Eventhandler einfach "unobstrusive" per Script hinzufuegen.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
  3. Hi,

    <textarea class="pictextstr" name="pictext_str" rows="" cols="" wrap="physical" onKeyDown="textCounter(this.form.pictext_str,this.form.remLen,50,this.form.pictext);" onKeyUp="textCounter(this.form.pictext_str,this.form.remLen,50,this.form.pictext);"></textarea>

    hältst du es für eine gute Idee, rows und cols leer anzugeben, nur damit der Validator befriedigt ist? Die Angaben haben ja durchaus ihren Sinn!

    erstmal gibt es "wrap" eigentlich nicht ... aber gut, verzichten kann ich wohl auch nicht drauf, weil sonst wird ja der text nicht automatisch umgebrochen in FF/IE...

    Wie bitte? Der automatische Umbruch in textarea ist eigentlich das übliche Verhalten. Nur Netscape 4.x hatte da AFAIK eine eigene Auffassung.

    aber was nun tun mit dem fehler:
    there is no attribute "onKeyDown".

    Stimmt. Das Attribut heißt auch onkeydown.

    Ciao,
     Martin

    --
    Viele Fachleute vertreten die Ansicht, jedes Feature eines Programms, das sich nicht auf Wunsch abstellen lässt, sei ein Bug.
    Außer bei Microsoft. Da ist es umgekehrt.
    1. Wie bitte? Der automatische Umbruch in textarea ist eigentlich das übliche Verhalten. Nur Netscape 4.x hatte da AFAIK eine eigene Auffassung.

      nimm doch mal den(auch neuesten) FF und probiers aus. und wrap gehts nicht.
      danke für die lösung mit dem kleinschreiben. xhtml! alles klein, ja klar :)

      zB

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de-de" lang="de-de" >
      <head>
        <meta http-equiv="content-type" content="text/html; charset=ISO-8859-15" />
        <meta name="robots" content="index, follow" />
        <title>test</title>

      <style type="text/css">
      <!--
      .css{
      border: 1px solid black;
      background:none;
      font-family: verdana, georgia, tahoma, arial, sans-serif;
      font-size: 11pt;
      color: black;
      font-weight: bold;
      overflow:hidden;
      width: 185px;
      height: 40px;
      }
      -->
      </style>

      <head>
      </head>

      <body>
       <textarea name="pictext" class="css" rows="" cols="" ></textarea>
      </body>
      </html>

      1. Hi,

        Wie bitte? Der automatische Umbruch in textarea ist eigentlich das übliche Verhalten. Nur Netscape 4.x hatte da AFAIK eine eigene Auffassung.

        nimm doch mal den(auch neuesten) FF und probiers aus. und wrap gehts nicht.

        Was geht da nicht?

        Das automatisch Zeilenumbrueche in den beim Absenden uebermittelten Inhalt der Textarea eingefuegt werden, dort wo er bei der Anzeige visuell umgebrochen wird?

        So ein Verhalten ist doch in aller Regel gar nicht gewollt, weil es eigentlich reichlich unpraktisch ist.

        Wofuer willst du das denn haben?

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
        1. Das automatisch Zeilenumbrueche in den beim Absenden uebermittelten Inhalt der Textarea eingefuegt werden, dort wo er bei der Anzeige visuell umgebrochen wird?

          also mein browserproblem gibts nicht, ist wie so oft ein fehler bei mir gewesen :)

          was ich will: text soll in der textarea umgebrochen werden für die darstellung, nicht im string. so aber ein gewollter zeilenumbruch \n in der texteingabe vorhanden ist, soll dieser erhalten bleiben.

          lg, tiggerle

          1. Hi,

            was ich will: text soll in der textarea umgebrochen werden für die darstellung, nicht im string.

            Die Browser nehmen doch bei Textarea-Inhalten (nahezu) die gleiche Art von "Umbruch" vor, wie in stinknormalem Fliesstest - wenn ein Wort nicht mehr auf die Zeile passt, dann wird es an den Anfang der naechsten gesetzt. Und das ganz ohne wrap-Attribut.

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
            1. Die Browser nehmen doch bei Textarea-Inhalten (nahezu) die gleiche Art von "Umbruch" vor, wie in stinknormalem Fliesstest - wenn ein Wort nicht mehr auf die Zeile passt, dann wird es an den Anfang der naechsten gesetzt. Und das ganz ohne wrap-Attribut.

              ja, nur der FF nicht bei aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa :)

          2. Hallo,

            also mein browserproblem gibts nicht, ist wie so oft ein fehler bei mir gewesen :)

            schon möglich ... ;-)

            was ich will: text soll in der textarea umgebrochen werden für die darstellung, nicht im string. so aber ein gewollter zeilenumbruch \n in der texteingabe vorhanden ist, soll dieser erhalten bleiben.

            Ja, und genau das ist das Standardverhalten aller derzeit gängigen Browser. Sonst würde das Eingabefeld für den Postingtext hier ja auch nicht wie gewünscht funktionieren.

            So long,
             Martin

            --
            Wer schläft, sündigt nicht.
            Wer vorher sündigt, schläft besser.