webForumDet fria alternativet

Formatera textfält

7 svar · 304 visningar · startad av klementin

klementinMedlem sedan aug. 2001117 inlägg
#1

Hej gott folk!
Försöker få till en formatering av texten i ett textfält. Jag vill att det skall formateras efter följande:

lars -> Lars
lars-åke -> Lars-Åke
niklas lars-åke gustav -> Niklas Lars-Åke Gustav

Med andra ord så ska den sätta versal på första bokstaven. Nedan är den kod jag har försökt få till men det fungerar inte riktigt, det kanske är RegExp som måste göra detta med och där faller alla mina möjligheter att lösa detta då jag inte kan RegExp. Kanske någon vet hur jag ska göra?
Tack på förhand!
Med vänlig hälsning
//K

	if(!obj1.value.replace(/\s/g,"") == "") {

		var name = '';
		var done = '';
		var loopArray = new Array("-", " ");

		for(a=0; a<loopArray.length; a++) {

			var nameArray = obj1.value.split(loopArray[a]);

			for(b=0; b<nameArray.length; b++) {

				name = nameArray[b].substring(0, 1).toUpperCase() + nameArray[b].substring(1, nameArray[b].length).toLowerCase();

				if([b + 1] == nameArray.length) {
					done = done + name;
				} else {
					done = done + name + loopArray[a];
				}

			}

			

		}

		obj1.value = done;
	}
CalevanMedlem sedan maj 20031 173 inlägg
#2

Kan detta vara något för dig?
http://www.w3schools.com/css/pr_text_text-transform.asp

klementinMedlem sedan aug. 2001117 inlägg
#3

Väldigt snyggt. visste inte att man kunde göra detta med CSS. Tyvärr så skickar den ju fortfarande formulärdatat som det är inskrivet, vilket jag inte är ute efter, glömde påpeka detta i mitt första inlägg.

Peter SMedlem sedan dec. 20025 483 inlägg
#4

En JS-lösning:

if(!obj1.value.replace(/\s/g,"") == "") {
	obj1.value = obj1.value.replace(/(^[a-zåäö])|(\s[a-zåäö])|(-[a-zåäö])/g, function(c){ return c.toUpperCase() });
}
klementinMedlem sedan aug. 2001117 inlägg
#5

Oj, perfekt! Stort tack till er båda!!! :e
//K

klementinMedlem sedan aug. 2001117 inlägg
#6

En liten tilläggsfråga

Kan man göra andra formateringar på likande sätt, tex. till e-postadress och användarnamn. Om jag har dessa fält:

Förnamn: lars-åke -> Lars-Åke
Efternamn: gustavsson -> Gustavsson
Mellanamn: kalle -> Kalle

Och av dessa värden får man ut tex. en e-postadress som ser ut så här: lars-ake.k.gustavsson@mymail.com och ett användarnamn som detta: largus

Är detta möjligt? Någon har kanske något tips på någon sida som tar upp detta?

Tack igen på förhand!
Med vänlig hälsning
//K

Peter SMedlem sedan dec. 20025 483 inlägg
#7
function subs(s){
    return s.replace(/å|ä|ö/gi, function(c){
	c = c.toLowerCase();
	if (c == "å" || c == "ä"){ return "a" }
	if (c == "ö")            { return "o" }});
}

epost.value = (subs(förnamn.value) + "."
		+ subs(mellannamn.value.charAt(0)) + "."
		+ subs(efternamn.value) + "@mymail.com").toLowerCase();
klementinMedlem sedan aug. 2001117 inlägg
#8

Tackar igen! Fan vad ni alla är duktiga alltså :)

128 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)