JavaScript Text vor und nach markiertem Text einfügen

thco

Grünschnabel
Hi,

ich glaube, der Titel sagt alles aus.
Ich möchte zwei verschiedene texte beim Klick auf einen Button vor und nach einem markierten Text einfügen. :confused:

mfg thco
 
Moin,

wo befindet sich dieser markierte Text?

Falls es ein Formularfeld ist:
Code:
function funktion(o,a,b)
{
  if(document.selection)
  {
    o.focus();
    document.selection.createRange().text=
      a+document.selection.createRange().text+b;
    document.selection.createRange().select();
  }
  else if (o.selectionStart || o.selectionStart == '0')
  {
    intStart = o.selectionStart;
    intEnd = o.selectionEnd;
    strText=String(o.value).substring(intStart,intEnd);                  
    o.value = (o.value).substring(0, intStart) +  a + strText +
                b+ (o.value).substring(intEnd, o.value.length);
    o.selectionStart=intStart;
    o.selectionEnd=o.selectionStart+String(a+b+strText).length;
    o.focus();
  }
}

Die Funktion erwartet als Parameter:
1. Das Formularfeld als Objekt
2. den String davor
3. den String danach
 
Hi,

wo befindet sich dieser markierte Text?

Falls es ein Formularfeld ist...

Der Text befindet sich irgendwo inerhalb einer Textarea.

function funktion(o,a,b)
{
if(document.selection)
{
o.focus();
document.selection.createRange().text=
a+document.selection.createRange().text+b;
document.selection.createRange().select();
}
else if (o.selectionStart || o.selectionStart == '0')
{
intStart = o.selectionStart;
intEnd = o.selectionEnd;
strText=String(o.value).substring(intStart,intEnd);
o.value = (o.value).substring(0, intStart) + a + strText +
b+ (o.value).substring(intEnd, o.value.length);
o.selectionStart=intStart;
o.selectionEnd=o.selectionStart+String(a+b+strText).length;
o.focus();
}
}

Ich weiss nicht... vieleicht mache ich etwas falsch :-(,
aber bei mir tut sich gar nichts.

mfg thco
 
Hi,

HTML:
<script language="JavaScript">

function funktion(o,a,b){
  if(document.selection){
    o.focus();
    document.selection.createRange().text=
      a+document.selection.createRange().text+b;
    document.selection.createRange().select();
  }
  else if (o.selectionStart || o.selectionStart == '0'){
    intStart = o.selectionStart;
    intEnd = o.selectionEnd;
    strText=String(o.value).substring(intStart,intEnd);                  
    o.value = (o.value).substring(0, intStart) +  a + strText +
                b+ (o.value).substring(intEnd, o.value.length);
    o.selectionStart=intStart;
    o.selectionEnd=o.selectionStart+String(a+b+strText).length;
    o.focus();
  }
}

</script>

<p>
  <input type="button" value="Einf&uuml;gen" onclick="funktion('textfeld', 'zuvor', 'danach');" />
</p>
<p>
  	<textarea cols="80" rows="6" name="textfeld"></textarea>
</p>

Vielleicht ist's kommplett falsch... :rolleyes:
bring es am besten bitte gleich so, wie du es machen würdest.

mfg thco
 
Hi,

wie Sven schon geschrieben hat, muss das Formularfeld als Objekt übergeben werden.

In deinem Fall könnte das wie folgt aussehen.
Code:
<input type="button" value="Einf&uuml;gen" onclick="funktion(document.getElementsByName('textfeld')[0], 'zuvor', 'danach');" />

Ciao
Quaese
 
Danke :)

und wenn man - wie wenn man auf den URL-Button klickt -
am schluss nur den am Anfang selectierten Text markiert haben will?

mfg thco
 
Zuletzt bearbeitet:
Hi,

ich bin nicht sicher, ob ich dein Anliegen richtig verstanden habe. Versuch es mal mit dieser Funktion:
Code:
function funktion(o,a,b){
  if(document.selection){
    o.focus();
    document.selection.createRange().text = a+document.selection.createRange().text+b;
    var t = document.selection.createRange();
    t.moveStart('character', String(a).length);
    t.moveEnd('character', -String(b).length);
    t.select();
  }else if (o.selectionStart || o.selectionStart == '0'){
    intStart = o.selectionStart;
    intEnd = o.selectionEnd;
    strText=String(o.value).substring(intStart,intEnd);
    o.value = (o.value).substring(0, intStart) +  a + strText + b + (o.value).substring(intEnd, o.value.length);
    o.selectionStart = intStart + String(a).length;
    o.selectionEnd = intStart + String(a+strText).length;
    o.focus();
  }
}

Ciao
Quaese
 

Neue Beiträge

Zurück