Was ich eigendlich möchte, ist ein simples replace. Also einen teil eines textareas auslesen und mit dem Wert eines textfeldes überschreiben.
Die alerts zu Testzwecken geben bis auf die letzte alles richtig aus. Also hakts irgendwo am replace…
var alterinhalt liesst halt den Wert es textareas aus. OK
var neuerinhalt liesst halt den Wert es textfeldes aus. OK
Die neue Variable var inhalt ist das neue Textfragment (ua aus dem neuerinhalt).
Das textfeld ist halt vorbelegt mit Sehr geehrter Herr Dr., Und das ganze soll ersetzt werden durch den im Textfeld eingegeben Nachnamen. ZB Sehr geehrter Herr Dr. Mustermann,
Danke für eure Mühe
wenn du replace mit Strings benutzt, wird der Suchstring ganz genau verglichen. In deinem Beispiel ist nach Dr. direkt ein Komma (ohne Leerzeichen), im Suchstring dagegen hast du dort ein Leerzeichen notiert und deswegen passt er nicht und es wird auch nichts ersetzt.
Ggf. kann es auch sinnvoller sein, mit regulären Ausdrücken zu matchen, also z. B. sowas wie /^(Sehr(\s+\w+)+)\s*,/
Der entscheidende Part ist doch „Sehr geehrter Herr Dr. ,“
Und der sieht im Screenshot gleich aus. Also beide mit Leerzeichen.
Und reg Expressions? Hm wird schwierig…
Denn es gibt uU ja noch mehr. Frau Dr., Frau Dr. med., Herr,…
Dann muss es immer heißen Sehr geehrter Herr Mustermann oder halt Sehr geehrte Frau Dr. Mustermann usw.
Also kann ich keine Länge angeben. Wenn ich es richtig deute, wird doch in der Variable „alterinhalt“ der Part „Sehr geehrter Herr Dr. ,“ Durch „Sehr geehrter Herr Dr. Mustermann,“ (bei eingabe von Mustermann im textfeld ersetzt.
Gruß
Oliver
dass nen ich mal fix! Danke!
Also:
rauskommen soll:
Sehr geehrter Herr Dr. Name_aus_erstemeingabefeld (zB Mustermann),
Rauskommen tut im Prinzip das selbe wie in alterinhalt steht. Also
Sehr geehrter Herr Dr. ,
Im alert stehts auch falsch drin. Das komische ist, dass die Testalerts vorher richtig aussehen. Nur beim replace gehts verloren.
Ohne\_Titel\_1
function nachname\_einfuegen()
{
var alterinhalt=document.getElementById('nachrichtentextfeld').value;
var name=document.getElementById('nachname').value;
var neuerinhalt=alterinhalt.replace(",", " " + name + ",");
document.getElementById('nachrichtentextfeld').value=neuerinhalt;
}
nachrichtentextfeld:
nachname:
Ich hoffe, ich hab das Ziel des ganzen verstanden
Am Besten wäre natürlich, wenn du in der Vorbelegung einen Platzhalten hättest. (zb „%“) dann könntest du den simpel durch den Namen ersten.
also angenommen der Text ist
„Sehr geehrter Herr Dr. %,“
Dann würde das ganz gut gehen:
function nachname\_einfuegen()
{
var ele = document.getElementById('nachrichtentextfeld');
var name=document.getElementById('nachname').value;
ele.value=ele.value.replace("%", name);
}
das erste argument muss kein regulärer ausdruck sein (ich habs nur immer so verwendet).
eben hab ich folgendes in meine browseradresszeile getippt (windows firefox):
javascript:str=‚hugo test‘;alt=‚hugo‘;neu=str.replace(alt,‚egon‘);alert(neu);
…und er sagt ganz brav: „egon test“
also versteh ich vielleicht einfach dein problem nicht?
Nein im Ernst. Notfalls mache ich es so, klar. Aber irgendwie hat mich nun auch der Ehrgeiz gepackt.
Komisch ists schon. Die Werte werden korrekt angezeigt und beim replace scheiterts?
Der Teil war von Anfang an klar. Was passt dir nicht an meiner Lösung bzw. was bekommst du dort raus und was stimmt daran nicht? Das meine ich mit Soll und Ist.
var xyz = alterinhalt.replace(/^(\w+(\s+\w+.?(-\w+.?)*)*)\s*,/, „$1 „+neuerinhalt+“,“)
document.getElementById(‚nachrichtentextfeld‘).value=xyz;
(neuerinhalt ist die variable aus dem Textfeld.
So gehts erstmal mit Herr! 100% + 1000 Dank!
Nun müsste ich nich die Lösung finden für „Frau Dr.“
Dabei wird der Nachname verschluckt. „Frau“ geht.
Daher nun für mich zum Verständnis: Was zur Hölle passiert da??
Bestelle ich bei jeder Ausführung ne Waschmaschine bei Amazon?
Mit reg expressions stehe ich ziemlich auf Kriegsfuss,
^ bedeutet glaube ich „starte am Anfang“.
Und dann? Ich kenne es nur so, dass man zB in php nach „Sehr“ sucht und das als startpunkt nimmt. Dann sucht man zB nach „Dr.“ und nimmt dass als Endpunkt. Danach sagt man ersetzt alles von-bis durch.
Gruß
Oliver