Avatar billede nwn Nybegynder
12. januar 2009 - 23:18 Der er 6 kommentarer og
1 løsning

Indsætte tegn rundt omkring markeret tekst

Hej.

Jeg har mig et textarea, hvor til jeg gerne vil tilføje nogle tegn rundt om markeringen, når der trykkes på en knap.

Hvis man så intet har markeret, skal der blot indsættes nogle tegn hvor markøren befinder sig i textarea'et.

Jeg ved jeg kan finde sådan en masse eksempler på bl.a. eksperten og ved at søge på google, men da jeg kun forstår en meget lille smule javascript, spørger jeg her, så jeg kan få det lavet så simpelt som muligt, og med forklaring.

Til formålet ved jeg der skal benyttes noget CreateRange for at finde ud af, hvor markøren befinder sig i textarea'et. Funktionen/scriptet skal minimum fungerer i alle "store" browsere, dvs. Internet Explorer, Firefox, Opera, Google Chrome samt Safari.

Så, lad os sige jeg har et textarea med id "mit_textarea" (Så kan der i hvertfald anvendes document.getElementById....) og 3 knapper. Trykkes der på den ene knap, vil markeringen i textarea'et få placeret [1] på den ene side, og [/1] på den anden side. Er der intet markeret, vil der blot bliver placeret følgende, på markørens placering inde i textarea'et: [1][/1]

Sådan fortsætter det med de andre 2 knapper, blot med [2], [3] osv.

Måske en lille begyndelse på det endelig script:

<script language="JavaScript">
function indsaet(tekst)
{
document.getElementById("mit_textarea").value += tekst;
}
</script>

//Kan jeg i øvrigt få af vide, hvad der er "bedst" at anvende?

<script language="JavaScrit">, <script> eller <script language="text/javascript"> Sidste nævnte kan jeg ikke helt huske, om er helt korrekt, men noget i den stil.

Nå videre:

<textarea cols="20" rows="7" id="mit_textarea"></textarea>

<input type="button" value="Indsæt et eller andet" onClick="indsaet('[1][/1]')">

Overstående vil kræve en del tid, og jeg vælger derfor at afsætte 200 point.

Jeg takker på forhånd.
Avatar billede jensgram Nybegynder
12. januar 2009 - 23:25 #1
<script type="text/javascript"> - language skal du ikke længere benytte.

Hovedspørgsmålet melder jeg pas til.
Avatar billede calundan Nybegynder
13. januar 2009 - 08:12 #2
Dette burde gøre det.

function tagText(target, beforeText, afterText)
{
    if (typeof(taget)=='string')) target = document.getElementById(target);
    var r_sel = document.selection.createRange();
    r_sel.text = beforeText + r_sel.text + afterText;
}

<input type="button" value="tag1" onclick="tagText('mit_textarea','[1]','[/1]'" />
Avatar billede olebole Juniormester
13. januar 2009 - 14:28 #3
<ole>

Nej, den løsning fungerer kun i én browser - og opgaven kan ikke løses i de andre browsere, hvorfor det ikke er en løsning, der kan implementeres på alm. websider

/mvh
</bole>
Avatar billede nwn Nybegynder
13. januar 2009 - 19:27 #4
calundan ->

Nej. Kan ikke rigtig bruges, da alt tekst der IKKE er markeret, forsvinder.

olebole -> Hvad mener du? Jeg ved der kan laves en løsning, der fungerer i flere browsere.

Fandt jo denne her:

<HTML>
    <HEAD>
    <SCRIPT>
    function storeCaret (textEl) {
      if (textEl.createTextRange)
        textEl.caretPos = document.selection.createRange().duplicate();
    }
    function insertAtCaret (textEl, text) {
      if (textEl.createTextRange && textEl.caretPos) {
        var caretPos = textEl.caretPos;
        caretPos.text =
          caretPos.text.charAt(caretPos.text.length - 1) == ' ' ?
            text + ' ' : text;
      }
      else
        textEl.value  = text;
    }
    </SCRIPT>
    </HEAD>
    <BODY>
    <FORM NAME="aForm">
    <TEXTAREA NAME="aTextArea" ROWS="5" COLS="80" WRAP="soft"
              ONSELECT="storeCaret(this);"
              ONCLICK="storeCaret(this);"
              ONKEYUP="storeCaret(this);"
    >
    Kibology for all.
    All for Kibology.
    </TEXTAREA>
    <BR>
    <INPUT TYPE="text" NAME="aText" SIZE="80" VALUE="Scriptology">
    <BR>
    <INPUT TYPE="button" VALUE="insert at caret"
            ONCLICK="insertAtCaret(this.form.aTextArea,
    this.form.aText.value);"
    >
    </FORM>
    </BODY>
    </HTML>

Som virker velfungerende. Det er dog det mest rodede stykke kode jeg har set til dato.

Måske en der kan stille det ordenligt op, bruge nogle mere forstålige navne, ændre på så det passer til mine behov og give lidt forklaring?
Avatar billede olebole Juniormester
14. januar 2009 - 02:35 #5
nwn >> Hvad sker der, hvis du highlighter ét ord i Firefox og derefter trykker på knappen?
Avatar billede nwn Nybegynder
14. januar 2009 - 16:19 #6
Så virker det ikke helt som forventet.

Men jeg ved det er muligt. Kig f.eks her http://www.rowl.dk/include/javascript.js
Avatar billede nwn Nybegynder
09. marts 2009 - 17:49 #7
Lukket =D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester