Smilies an der aktuellen Courser-Position in einem Textfeld

swffilms

Grünschnabel
Hallo an alle,

Wie der Titel schon sagt, ist mein Problem folgendes:

Ich möchte in einem Gästebuch / Forum Smilies einbauen.
Ich habe es auch schon so weit, dass man auf einen Smilie klickt und der Code vom Smilie wird dem Textfeld hinzugefügt.
Bei meinem Script wird der Code immer an das Ende hinzugefügt.
Aber ich möchte das der Code an der Stelle, wo der Courser ist, hinzugefügt wird.
Wenn man zum Beispiel in der Mitte vom Beitrag arbeitet, dann soll dort auch der Code eingefügt werden.

Mein jetziges Script mit einem kleinem HTML-Aufbau drum herum:
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
        <head>
                <title>Smilie-Test</title>
                <script language="JavaScript" type="text/javascript">
                        function smilie(code)
                                {
                                document.post.message.value  += code;
                                document.post.message.focus();
                                }
                </script>
        </haed>
        <body>
                <a href="javascript:smilie(':)')">:) hinzufügen</a>
                <form action="" method="post" name="post">
                <textarea name="message" rows="20" cols="55" ></textarea>
                </form>
        </body>
</html>

mfg,
swffilms
 
Danke für deine Antwort!

Das sieht schon mal nicht schlecht aus!

Aber bei mir klappt es nicht! :(
Ich schätze es liegt daran (dass da etwas nicht stimmt):
Code:
javascript:smilie(':)',document.Formular.Texteingabe.value)

mfg,
swffilms

€dit:
Und noch mal der ganze Testcode:
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title>Smilie-Test</title>
        <script type="text/javascript">
            <!--
            function smilie(strText,objElem)
                {
                if(document.selection)
                    {
                    objElem.focus();
                    document.selection.createRange().text=strText;
                    document.selection.createRange().select();
                    }
                  else if (objElem.selectionStart || objElem.selectionStart == '0')
                    {
                    intStart = objElem.selectionStart;
                    intEnd = objElem.selectionEnd;
                    objElem.value = (objElem.value).substring(0, intStart) + strText + (objElem.value).substring(intEnd, objElem.value.length);
                    objElem.focus();
                    }
                  else
                    {
                    objElem.value += strText;
                    }
                }
            //-->
        </script>
    </haed>
    <body>
        <a href="javascript:smilie(':)',document.Formular.Texteingabe.value)">:) hinzufügen</a>
        <form action="" method="post" name="Formular">
        <textarea name="Texteingabe" rows="20" cols="55" ></textarea>
        </form>
    </body>
</html>
 
Zuletzt bearbeitet:
Danke das du mir hilfst!

Aber wenn ein Problem gelöst ist, dann tritt ein anderes auf! xD

Der Courser spring immer an das Ende vom Eingabefeld!

Nerviger kann es doch nicht mehr werden! :rolleyes:

Mit: "objElem.focus();" wird ja der courser auf das textfeld gesetzt. Aber wie kann ich jetzt einstellen wohin im Textfeld?

Ich check das mit dem Courser-Kram einfach nich! ^^

danke,
swffilms
 
Füge nach dieser Zeile:
Code:
objElem.value = (objElem.value).substring(0, intStart) + strText + (objElem.value).substring(intEnd, objElem.value.length);
...jenes ein:
Code:
objElem.selectionStart=objElem.selectionEnd=intStart+strText.length;
 
Endlich! Keine einziger Bug! *freu*

Ein großen Dank an Sven Mintel, denn ohne dir würde ich immer noch dumm aus der Wäsche schauen! ^^

Für alle, die den Code in kompletten Version benötigen:
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title>Smilie-Test</title>
        <script type="text/javascript">
            <!--
            function smilie(strText,objElem)
                {
                if(document.selection)
                    {
                    objElem.focus();
                    document.selection.createRange().text=strText;
                    document.selection.createRange().select();
                    }
                  else if (objElem.selectionStart || objElem.selectionStart == '0')
                    {
                    intStart = objElem.selectionStart;
                    intEnd = objElem.selectionEnd;
                    objElem.value = (objElem.value).substring(0, intStart) + strText + (objElem.value).substring(intEnd, objElem.value.length);
                    objElem.selectionStart=objElem.selectionEnd=intStart+strText.length;
                    objElem.focus();
                    }
                  else
                    {
                    objElem.value += strText;
                    }
                }
            //-->
        </script>
    </haed>
    <body>
        <a href="javascript:smilie(':)',document.Formular.Texteingabe)">:) hinzufügen</a>
        <form action="" method="post" name="Formular">
        <textarea name="Texteingabe" rows="20" cols="55" ></textarea>
        </form>
    </body>
</html>

cya,
swffilms
 

Neue Beiträge

Zurück