Peter T.: String mit Zeilenümbruchen mit Textarea vergleichen

Hallo,

auf einer kleinen Website für Rezepte habe ich eine Variable definiert die in etwa so aussieht:

  
zutaten = "Für 2 Personen:\n250g Reis\n1 Becher Mozzarellabällchen\n150 g Kirschtomaten\n1 Handvoll Rucola\n2 EL Balsamico-Essig\nSalz und Pfeffer"

Diese Variable wird beim Laden der Seite als Text in eine Multiline Textarea geladen und ist hellgrau dargestellt. Das soll dem User helfen wie er die Zutaten formatieren könnte, nämlich mit Zeilenumbrüchen.
Wenn der User also die Textarea im Focus hat (mit Maus oder Tab) wird das Textfeld leer dargestellt, die Schriftfarbe schwarz und der User kann seine eigenen Zutaten hineinschreiben.
Falls der User die Textarea wieder verlässt ohne etwas hineinzuschreiben, wird die Varibale wieder in die Textarea geladen und ausgegraut.

So weit so gut, das alles funktioniert. Nun aber zu meinem Problem.

Ich mache via Javascript beim Senden zusätzliche Abfragen ob die Felder ausgefüllt wurden. Wenn ich nun also wissen möchte ob der User Zutaten in das Feld geschrieben hat schreibe ich grob gesagt folgendes:

if (document.form.field_zutaten.value == zutaten)  
{  
alert ("Bitte verraten Sie uns Ihre Zutaten!");  
}

Das Funktioniert wunderbar in Firefox, der IE hat aber leider Probleme.
So weit ich das Problem eingrenzen konnte hängt dies mit dem \n in der Varibale zusammen, wenn ich nämlich diese weglasse funktionert es auch da.

Ich hoffe das war verständlich erklärt.
Danke für Hilfe
Peter

  1. Hi,

    if (document.form.field_zutaten.value == zutaten)

    {
    alert ("Bitte verraten Sie uns Ihre Zutaten!");
    }

    
    >   
    > Das Funktioniert wunderbar in Firefox, der IE hat aber leider Probleme.  
    > So weit ich das Problem eingrenzen konnte hängt dies mit dem \n in der Varibale zusammen, wenn ich nämlich diese weglasse funktionert es auch da.  
      
    Zeilenumbrüche können je nach System unterschiedlich repräsentiert werden - \n, \r\n oder auch nur \r.  
    Aus Sicht von JavaScript sollte ein Zeilenumbruch eigentlich immer \n sein - auch beim Auslesen des Inhaltes aus einem Formularfeld.  
    Es kann aber sein, dass ein Browser auch hier anders reagiert.  
      
    Entweder vereinheitlichst du die Zeilenumbruchzeichen vor dem Vergleichen (bspw. mittels eines regulären Ausdrucks, der \r\n, \r und \n jeweils durch ein \n ersetzt), oder du kürzt sie ganz heraus (dass der Nutzer den vorgegebenen Text unverändert lässt bis auf das Hinzufügen/Entfernen von Zeilenumbrüchen, ist ja eher unwahrscheinlich).  
      
    Du könntest auch noch versuchen, den Feldinhalt nicht erst per JavaScript zu setzen, sonder gleich im HTML als Defaultinhalt des Feldes - und dann den aktuellen value mit defaultValue abgleichen. Das sollte(!) eine browserabhängige Behandlung von Zeilenumbrüchen dann eigentlich auch keine Auswirkungen mehr haben dürfen.  
      
    MfG ChrisB  
      
    
    -- 
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    
    1. Hallo ChrisB und danke für deine Antwort.
      Ich habe das Problem nun umgangen indem ich die jquery library verwende, die ich anderorts in dem Projekt sowieso brauche, und das selbige mit dessen syntax code... geht jetzt überall.
      Gruss
      Peter