Seite 1 von 1

Smilies anklicken funktioniert nicht richtig

Verfasst: 17.04.2014 14:41
von Knowhow-Sauger
Hallo Freunde,

für ein eigenes Template (Style) wollte ich eigene Smilies haben. Also kamen NICHT die global installierten Smilies in Frage.
Und so habe ich mir dann in der posting_editor.html an der Stelle, wo normalerweise die "normalen" Smilies stehen folgenden Code eingebaut:

Code: Alles auswählen

<img src="/styles/subsilver3/theme/images/smilies/1.gif" onclick="document.getElementById('message').value += '[s1][/s1]'">
wobei die Variablen

Code: Alles auswählen

[s1][/s1]
für einen Smilie stehen.
Das habe ich via BB-Codes im ACP so eingegeben.

Das Problem ist jetzt: Sobald man einen Smilie anklickt, erscheint zwar

Code: Alles auswählen

[s1][/s1]
im Editor-Textfeld und das wird dann nach dem abschicken auch als Smilie-GIF problemlos ausgegeben. Nur das Problem ist, dass der BB-Code immer ganz am Ende des Editors angezeigt wird, statt an der Stelle wo der Curser blinkt!

Frage:
Wie kann ich den Code nun so verändern, dass der BB-Code immer genau an der Stelle im Editor erscheint, wo auch der Curser blinkt?

DANKE! :)

Re: Smilies anklicken funktioniert nicht richtig

Verfasst: 05.05.2014 16:20
von HabNurNeFrage
Hi,

onclick="bbfontstyle('[s1]',' [/s1]')"


Oder mit einer eigenen Funktion:

Code: Alles auswählen

<script type="text/javascript">
//<![CDATA[
function insertsmiley(text) 
        {   
            var field = document.getElementById("message");

            if (document.selection) 
            {
                var range = document.selection.createRange();

                if (!range || range.parentElement() != field) 
                {
                    field.focus();
                    range = field.createTextRange();
                    range.collapse(false);
                }
                range.text = text;
                range.collapse(false);
                range.select();
            } 
            else 
            {
                field.focus();
                var val = field.value;
                var selStart = field.selectionStart;
                var caretPos = selStart + text.length;
                field.value = val.slice(0, selStart) + text + val.slice(field.selectionEnd);
                field.setSelectionRange(caretPos, caretPos);
            }
        }
//]]>
</script>
Und dann im Aufruf: onclick="insertsmiley('[s1][/s1]');return false;"

LG