Maddi1986: TextArea auslesen

Hallo zusammen.

Ich möchte mittels JavaScript aus einer TextArea die Anzahl der eingetippten Wörter auslesen. Dies soll aber dynamisch geschehen nach jedem eingetippten Wort soll also die Anzahl der Wörter ermittelt werden. Weil ich möchte unter der TextArea eine Spalte einfügen die sagt: "Anzahl der Ihnen verbleibenden Wörter ...". Ich habe mir gedacht, das man es mittels eines Leerzeichens auslesen kann. Also bei jedem neuen Leerzeichen kommt ein neues Wort. Aber was ist, wenn jemand ausversehen zwei mal auf die Leertaste klickt. Hat jemand hier vielleicht eine Idee wie dies funktioniert und vor allem wie man die Anzahl der Wörter aus einer TextArea bestimmen kann?

Mit freundlichen Grüßen
Maddi1986

  1. Liebe(r) Maddi1986,

    "Anzahl der Ihnen verbleibenden Wörter ...".

    interessant! Ich kannte das bisher eher unter dem Ansatz der noch verbleibenden Zeichen...

    Zu Deinem Problem: Du wirst das onkeyup-Event benötigen, damit jedesmal, wenn eine Taste wieder losgelassen wird, Dein Wert aktualisiert werden kann.

    Nehmen wir einmal folgendes HTML als gegeben an:

    <textarea id="eingabefeld" cols="40" rows="6">Text hier...</textarea>  
    <p>Ihnen verbleiben noch <span id="anzahl">100</span> Wörter.</p>
    

    Jetzt können wir mittels Javascript loslegen (folgenden Code unbedingt über externe JS-Datei einbinden!):

    var WoerterTester = { // neues Objekt anlegen  
        textareaID : "eingabefeld",  
        spanID: "anzahl",  
        maximum : 100, // maximal erlaubte Wörterzahl  
      
        init : function () {  
            // Unseren Tester nach dem vollständigen Laden der Seite einbinden lassen  
            this.oldWinOnLoad = window.onload; // alte onload-Funktion sichern  
            window.onload = function () { // neue onload-Funktion eintragen  
                if (typeof(WoerterTester.oldWinOnLoad) == "function")  
                    WoerterTester.oldWinOnLoad();  
                WoerterTester.onLoad();  
            };  
        },  
      
        onLoad : function () {  
            // Textarea mit Überwachung versehen  
            document.getElementById(this.textareaID).onkeyup = function (e) {  
                // diese Funktion wird nun nach Loslassen einer Taste ausgeführt  
                WoerterTester.zaehlen(  
                    document.getElementById(WoerterTester.textareaID),  
                    document.getElementById(WoerterTester.spanID)  
                );  
            };  
        },  
      
        zaehlen : function (textarea, ausgabe) {  
            var eingabe = textarea.value;  
            var woerter = eingabe.split(/[ ]+/); // erzeugt ein Array! Mehrfache Spaces werden als ein einzelnes behandelt.  
      
            ausgabe.firstChild.nodeValue = (this.maximum - woerter.length).toString();  
        }  
    };  
    WoerterTester.init();
    

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Vielen dank für deine super Hilfe Felix. Mit deiner Hilfe habe ich die Aufgabe gelöst.