Bernd: Whitespace in window.prompt

Beitrag lesen

Wieviele Benutzernamen kann der Benutzer denn auf einmal eingeben? Mir stellt sich die Frage, was die Schleife da zu suchen hat. Normalerweise gibt *ein* Benutzer *einen* Benutzernamen an. Eine Prüfung bezieht sich darauf, ob dieser gültig ist. Bei dir wird eine Schleife angestoßen, die ausgeführt wird, solange der Benutzername ein Leerstring, NULL oder „Dein Name“ ist. Kannst du das Konstrukt bitte näher erläutern?

Tschö, Auge

Nun,

  
var UserName = "";  
while (UserName = "" || UserName == null || UserName == "Dein Name")  
  {  
  UserName = window.prompt("Wie lautet dein Name?", "Dein Name");  
  UserName = trim (UserName);  
  }  
window.alert("Hallo " + UserName);  

Die while-Schleife erscheint mir als eine einfache Möglichkeit den User dazu zu bringen einen Namen einzugeben.. Normalerweise wird der User auch von sich aus einen Namen eingeben. Das günstige an der while-Schleife ist, dass sie mögliche "Täuschungsversuche" wie Whitespace, Nichts oder Abbrechen des Users "abblocken" kann  (Sie überprüft praktisch die Gültigkeit der Eingabe des Users). Im Falle dieses Falles wird der User direkt erneut nach seinem Namen gefragt. Die Variable  UserName  kommt an zahlreichen Stellen der Webseite vor - und Whitespace etc. sind da fehl am Platze.

Aber nun zu der Sache die ich nicht ganz nachvollziehen kann:
Ohne den Script-Teil
    User Name = trim (UserName);

  • kann der User die Eingabezeile nicht mit 'Dein Name' ausgefüllt lassen,    (' "Dein Name" '-Gültigkeitsüberprüfung)
  • kann der User die Eingabezeile nicht leer lassen und auf 'Weiter' klicken,    (' "" '-Gültigkeitsüberprüfung)
  • kann der User die Eingabeaufforderung nicht Abbrechen    (' null '-Gültigkeitsüberprüfung)

Um mir den umständlichen Teil wie
    while (UserName == "" || UserName == " " || UserName == "  "   ~~
zu ersparen hat mir jemand die function trim (str) geschrieben   (Danke nochmal dafür ;) )

Mit dem Script-Teil
    UserName = trim (UserName);
gibt es einen Unterschied:
Drückt der User auf 'Abbrechen' fällt das nicht mehr unter die Gültigkeitsüberprüfung der while-Schleife - die while-Schleife bricht ab und der darauf folgende Teil im Script
    window.alert("Hallo " + UserName);
wird nicht ausgeführt..

Ergo liegt es an
    UserName = trim (UserName);
Ich habe keine Erklärung dafür warum die  ' null '-Gültigkeitsüberprüfung  mit dem trim-Teil nicht mehr funktioniert oder wie man das Ganze gar wieder zum laufen bringt ;)

Bernd