Hallo Forum,
ich habe ein kleines Problem:
ich möchte erreichen, dass ein Name, der in ein Formular-
feld "realname" eingetragen wird, "gesäubert" wird, d.H.
-
Zuerst soll der ganze Text in Kleinbuchstaben umgewandelt werden,
-
dann soll der erste Buchstabe in einen Großbuchstaben
umgewandelt werden, -
jeder Buchstabe, der nach einem Leerzeichen kommt, soll ebenfalls
groß geschrieben werden.
Punkt 1) und 2) funktionieren:
nameComp = document.eingabe.realname.value.toLowerCase();
nameComp = document.eingabe.realname.value.substr(0,1).toUpperCase() +document.eingabe.realname.value.substr(1,(document.eingabe.realname.value.length-1));
Punkt 3) habe ich folgendermaßen probiert:
for(i=0;i<8;++i)
{
whitespace = nameComp.search(/\s/);
if(whitespace != -1)
{
nameComp = nameComp.substring(0,whitespace+1).replace(/\s/,"_-_") + nameComp.substr(whitespace+1,1).toUpperCase() +document.eingabe.realname.value.substr(whitespace+2,(document.eingabe.realname.value.length-1));
}
}
for(i=0;i<8;++i)
{
nameComp = nameComp.replace(/_-_/," ");
}
Insgesamt achtmal wird der String auf ein Leerzeichen hin durchsucht,
wird eins gefunden, wird das folgende Zeichen in einen Großbuchstaben
gewandelt, und das Leerzeichen durch "_-_" ersetzt, damit bei nächsten
Suchlauf das nächste Leerzeichen gefunden werden kann.
Anschließend werden alle "_-_" wieder durch ein Leerzeichen ersetzt.
Das klappt so halbwegs, wenn jemand allerdings mehrere Leerzeichen
zwischen zwei Namensteilen eingibt, wird z.B. aus "bernd blindtext"
plötzlich "Bernd Indext" oder ähnlicher Blödsinn.
Weiss jemand, warum? Oder gibt es zu diesem Problem vielleicht eine
1000-fach erprobte Standardlösung??? ;-) Im Forumsarchiv jedenfalls
habe ich sie nicht gefunden...
Vielen Dank für Eure Hilfe
David