Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: hampa am 24.05.05 - 13:55:58

Titel: Mit JS CRLF durch <br> ersetzen...
Beitrag von: hampa am 24.05.05 - 13:55:58
Hallo Leute

Ich möchte gerne in einem String mit JavaScript (könnte auch eine Formel sein) die Zeichenfolge CRLF (chr(13)+chr(10)) durch einen <br>-Tag ersetzen.

Habt ihr sowas schoneinmal irgendwo gebraucht?

Danke für eure Vorschläge

Gruss aus der Schweiz
Hampa
Titel: Re: Mit JS CRLF durch <br> ersetzen...
Beitrag von: Mark³ am 24.05.05 - 14:15:05
Willst du das im Frontend, Backend oder Web ersetzen? Im Web könnte sowas gehen:

var NS = (window.Event) ? 1 : 0;

function checkKey(e) {
  var code = (NS) ? e.which : event.keyCode;
 
  if (code == "13"){
HIER MUSS ERSETZ-CODE REIN
       return false; }
}

document.onkeypress = checkKey;

oder nimm das hier:

*Offered freely by Darren J Semotiuk, Collaborative Learning Network Inc., http:////www.co-learn.net/ Just keep this comment line intact. Thanks! *
function replacestring(str_normal,str_find,str_replace,int_case_insensitive)
{
       if (arguments.length<3 || str_find=="" || str_normal=="" ||
 typeof("".split)!="function")
              return(str_normal);

       //no parm means default, "case SENSITIVE"...
       if(!(int_case_insensitive))
              return(str_normal.split(str_find)).join(str_replace);

       str_find=str_find.toLowerCase();

       var rv="";
       var ix=str_normal.toLowerCase().indexOf(str_find);
       while(ix>-1)
       {
              rv+=str_normal.substring(0,ix)+str_replace;
              str_normal=str_normal.substring(ix+str_find.length);
              ix=str_normal.toLowerCase().indexOf(str_find);
       };
       return(rv+str_normal);
};//end function replacestring
Titel: Re: Mit JS CRLF durch <br> ersetzen...
Beitrag von: hampa am 24.05.05 - 14:22:28
Hallo Mark

Vielen Dank für Deine Antwort....

Ich möchte beim "Submitten" des Web-Forms ein Feld abfüllen, dass aber keine CRLF enthalten darf. Die sollen durch <BR> ersetzt werden. In dem erwähnten Feld wird HTML-Code gespeichert, der später angezeigt werden soll.

Das Problem, dass ich sehe, ist, dass es sich um zwei Zeichen (eben CR und LF) handelt, die nun durch ein <BR>-Tag ersetzt werden sollen.

Ich könnte natürlich Deine Replace-Funktion nehmen und das chr(13) durch <BR> ersetzen und das chr(10) durch nichts. Vielleicht klappts ja.

Gruss Hampa
Titel: Re: Mit JS CRLF durch <br> ersetzen...
Beitrag von: datenbanken24 am 24.05.05 - 15:18:22
Wir machen das auf der Notes Seite nach dem Submit so:

Das HTML-Textarea Feld "A" ist auf der Notes Seite eine Textfeld mit Multivalue und Zeilenumbruch als Listentrenner.

So bekommt man beim Submit in dem eigentlichen Notes-Feld eine Liste zurück.

Das Zielfeld "B" soll Einzelwert Text sein, mit <br> antselle der Zeilenumbrüche.
Also ist die Berechnungsformel des (computed) Zielfeldes auf Notes-Seite dann ein einfaches

@Implode( Feld A; "<br>")

Gruß,
Uwe
Titel: Re: Mit JS CRLF durch <br> ersetzen...
Beitrag von: Semeaphoros am 24.05.05 - 19:43:04
Das dürfte aber Leerzeilen im Input-Feld unterdrücken ... oder?
Titel: Re: Mit JS CRLF durch <br> ersetzen...
Beitrag von: datenbanken24 am 25.05.05 - 08:16:33

Das Problem, dass ich sehe, ist, dass es sich um zwei Zeichen (eben CR und LF) handelt, die nun durch ein <BR>-Tag ersetzt werden sollen.

Ich könnte natürlich Deine Replace-Funktion nehmen und das chr(13) durch <BR> ersetzen und das chr(10) durch nichts. Vielleicht klappts ja.



CR und LF Ersetzung durch @Newline bei SingleValue Feldern:

@Trim(
     @ReplaceSubstring(
   "Feldname";
   (@Char(13) + @Char(10)) : @Char(13);
   @Char(13) : @NewLine)
)

Anstelle des Newline wäre das bei Dir das "<br>"

Einmal mit und einmal ohne:
(@Char(13) + @Char(10)) : @Char(13);

ist wegen Windows und Linux (Serverbasis),
die den Zeilenumbruch unterscheidlich zurückgeben.
Titel: Re: Mit JS CRLF durch <br> ersetzen...
Beitrag von: hampa am 25.05.05 - 08:46:59
Hallo und guten Morgen

Vielen Dank für Eure Auskünfte. Ich bin eben auf ein anderes Problemchen gestossen. Bis ahnin war es so, dass dieses Feld bei jedem submit mit HTML-Code gefüllt wird. Dieses Feld beinhaltet den HTML-Code, der im Read Mode eine Tabelle mit Spaltenüberschriften und den alten Werten anzeigt und wer das Dokument geändert hat. Abgefüllt wird das ganze mittels JS. Der Code sieht inetwa so aus (Ausschnitt):

Code
tHead = "<tr class=\"tHeadLine\"><td>" + doc.tmpTimeStamp.value + "</td><td>" + doc.tmpCurrUser.value + "</td><td>" + _state + "</td></tr>";
	sRemark = fnReplaceCR(doc.dsgnTaskAnswerRemark.value);
	
	if (g_HisNewAssign.length > 0) {	// Task wurde neu zugewiesen
		tBody = "<tr><td colspan=3>" + g_HisNewAssign  + "</td></tr>" + "<tr><td colspan=3>" + sRemark + "</td></tr>";
	} else {
		tBody = "<tr><td colspan=3>" + sRemark + "</td></tr>";
	};
	g_HisNewAssign = '';
	doc.dsgnTaskHistory.value += tHead + tBody;

Das Feld wird als mittels JS gefüllt und nicht Berechnetem Feldinhalt. Ich habe nämlich festgestellt, dass es mir nach einer gewissen länge einfach den Feldwert "abschneidet", was mir bei der Einfüllerei mit JS nicht passiert. Darum ist es (wahrscheinlich) nötig, dass ich die Ersetzerei von CRLF in JS bewerkstelligen kann. Was meint ihr dazu?

Gruss und Dank

Hampa