webForumDet fria alternativet

stänga öppna taggar...

5 svar · 260 visningar · startad av patrik2002

patrik2002Medlem sedan okt. 2001253 inlägg
#1

hejsan! ja har en liten fråga, jag haar ett litet problem med mina knappar till mitt forum, de som gör att användaren kan göra bold text å så, det är nämligen så att jag har gjort så att om en text är markerad så kommer den texten att hamna inom taggarna men om ingen text är markerad så dyker det upp en "öppnar" tagg i rutan och personen kan skriva, och sedan trycka på knappen igen så det dyker upp en "stängar" tagg... jag skulle tro att man behöver leta med javascipt efter "tagg par" och om antalet är ojämnt sätta dit en "stängar tagg"... hur gör jag detta? någon som kan hjälpa?

JojoxxMedlem sedan juni 20004 308 inlägg
#2

Det är ju inte riktigt så lätt, åtminstone inte om du vill att det skall bli rätt. Missar du ex </b> i <i><b>text</i> så kan du inte bara sätta det sist eftersom <i><b>text</i></b> inte är rätt html. Samma sak gäller när du missar en starttag. Bara för att du missar en <i> nära slutet av din text betyder det inte att du vill få hela texten kursiv vilket ett sånt script skulle göra genom att sätta en <i> först.

Kanske är bättre att räkna start och slut-taggar och bara varna om det inte stämmer så användaren själv får korrigera?

patrik2002Medlem sedan okt. 2001253 inlägg
#3

men hur räknar ja antalet taggar?

JojoxxMedlem sedan juni 20004 308 inlägg
#4
// Skaka en prototype som räknar antalet träffar mha regexp
String.prototype.countR = function(re){
	return (!this.match(re))?0:this.match(re).length
}

str="<i></i><i></i><i><b></b></i>";
alert("Antal träffar av <i> i str: "+str.countR(/<i>/ig));
patrik2002Medlem sedan okt. 2001253 inlägg
#5

kan man åxå kola vilken som va den senaste taggen?om någon tex skriver <b><i> så kan man INTE trycka på <b> innan man avslutat den...

JojoxxMedlem sedan juni 20004 308 inlägg
#6
String.prototype.lastTag = function(){
	return (!this.match(/<([\w|\/]+)?>/ig))?false:this.match(/<([\w|\/]+)?>/ig)[this.match(/<([\w|\/]+)?>/ig).length-1];
}

eller om du bara skall leta efter start-taggar;

String.prototype.lastTag = function(){
	return (!this.match(/<(\w+)?>/ig))?false:this.match(/<(\w+)?>/ig)[this.match(/<(\w+)?>/ig).length-1];
}

Så kan du använda;

alert("<span><i><b>bla</b></i></span>".lastTag());

Men det har du inte mycket nytta för;

<i><b> - sista taggen är <b> och enligt din tankemodell får du därför inte sätta </i> vilket är helt rätt i detta fall.

<i><b></b> - sista taggen är </b> (eller <b> om du bara räknar start-taggar), men här ÄR det ok att sätta </i>.

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