Claudio: Wo liegt der Fehler (im Codeschnipsel)?

Hallo!

Habe gestern zum Thema: "Textformatierung im Textarea-Feld" schon ein Thema gepostet und heute einen passenden Code im Archiv gefunden (Anhang).

Problem: Drückt man auf das "Fett" oder "Kursiv" Button OHNE einen Text markiert zu haben werden die Tags in das Button geschrieben.

Da diese Funktion allerdings nicht erwünscht - vielmehr in dem Fall die Ausführung der Funktion umgangen werden soll - benötige ich Eure Hilfe. Kann mich vielleicht jemand auf die fehlerhafte Stelle im Code verweisen?

Besten Dank vorab, Claudio.

--------------------------------
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<script language="JavaScript">
<!--
function ersetzen(sel,wert) {
var rg=sel;
rg.text='<'+wert+'>'+rg.text+'</'+wert+'>';
return
}
//-->
</script>
<form name="a1" action="/test.php" method="post">
<input type="Button" name="" value="Fett" size="" maxlength="" onClick="ersetzen(selection.createRange(),'b')">
<input type="Button" name="" value="Kursiv" size="" maxlength="" onClick="ersetzen(selection.createRange(),'i')">
<textarea name="a2" cols="40" rows="20" >Das heißt eine übersichtliche Gliederung, nicht mehr als 2 Schriftarten,
angemessene Schriftgröße und ein gezielter Einsatz von Farben,
Schriftstilen und Absatzformaten.
Bilden Sie kurze Sätze und sorgen Sie dafür, das ein Sinnzusammenhang immer deutlich wird.
Unterbrechen Sie den Textfluß durch Absätze.
Verwenden Sie Abkürzungen nur bei Bedeutungsklarheit.
Weiterführende Erläuterungen können und sollten bei Bedarf in
Fuß- und Endnoten oder Anhänge aufgenommen und ausgegliedert werden.
</textarea></form>
</body>
</html>
--------------------------------

  1. Hi,

    Problem: Drückt man auf das "Fett" oder "Kursiv" Button OHNE einen Text markiert zu haben werden die Tags in das Button geschrieben.

    function ersetzen(sel,wert) {
    var rg=sel;
    rg.text='<'+wert+'>'+rg.text+'</'+wert+'>';
    return
    }

    Wie wäre es, wenn Du, bevor Du rg.text änderst, nachfragst, ob da überhaupt was drin ist?
    Übrigens rg kannst Du ganz weg lassen und mit sel arbeiten.

    Grüße,

    Ronny

  2. Moin!

    Hm. warum lässt Du Dir nicht mal den Inhalt der Variablen sel ausgeben, klickst selber auf die Buttons, schaust, was drin steht und prüfst dann genau darauf:

    function ersetzen(sel,wert) {

    if (sel="foo") { return }
    if (sel="bar") { return }

    var rg=sel;
    rg.text='<'+wert+'>'+rg.text+'</'+wert+'>';
    return
    }
    //-->
    </script>

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
  3. Hallo Claudio,
    am Codeschnipsel liegts nicht.
    Es liegt am Fokus.
    Wenn Du auf den Button klickst, hat natürlich der Button den Fokus,
    die Range wird dann vom Button gebildet und Dein Text dann eben in den Button-Bereich eingefügt.
    Bevor Du die sel ausliest, mußt Du den Fokus wieder auf die
    Textarea setzen - dann klappts.
    Wenn Du statt der TA einen Iframe benutzt, hast Du das Problem nicht.
    Iframe ist wie ein eigenständiges Window.
    Gruß Paul