Avatar billede fangel Nybegynder
04. marts 2003 - 19:57 Der er 11 kommentarer og
1 løsning

insætning af tekst i et <textarea>

Hej

lad os sige du har en <textarea>... du har også en <button>...

jeg skal så have lavet 2 stykker JS...

1) indætte [txt] lige der hvor markøren står

2) indsætte forand det markerede tekst og efter...

15p for hvert script... (ps, det skal helst være en funktion der bliver kaldt, som fx

indsaet_txt(txt, form, field);
indsaet_txt_udvidet(start, slut, form, field);

Morten
Avatar billede horsmark Nybegynder
04. marts 2003 - 21:38 #1
<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);\"
    >
    Hej hej Vi skal indsætte spændende tekster her.
    </TEXTAREA>
    <BR>
    <INPUT TYPE=\"text\" NAME=\"aText\" SIZE=\"80\" VALUE=\"Nikolajdu\">
    <BR>
    <INPUT TYPE=\"button\" VALUE=\"Indsæt\"
            ONCLICK=\"insertAtCaret(this.form.aTextArea,
    this.form.aText.value);\"
    >
    </FORM>
    </BODY>
    </HTML>
Avatar billede horsmark Nybegynder
04. marts 2003 - 21:39 #2
Avatar billede fangel Nybegynder
05. marts 2003 - 07:58 #3
tester det i dag efter 14:30... kan du også spm 2?
Avatar billede horsmark Nybegynder
05. marts 2003 - 08:17 #4
SPM 1 + SPM 2:

<HTML>
    <HEAD>
    <SCRIPT>
    function storeCaret (textEl) {
      if (textEl.createTextRange)
        textEl.caretPos = document.selection.createRange().duplicate();
    }
    function insertAtCaret (textEl, text, StartTag, EndTag) {
      text = StartTag + text + EndTag;
      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);">
    Hej hej Vi skal indsætte spændende tekster her.
    </TEXTAREA>
    <BR>
    <INPUT TYPE="text" NAME="aText" SIZE="80" VALUE="testhest">
    <BR>
    Starttag
    <INPUT TYPE="text" NAME="aTagStart" SIZE="80" VALUE="<b>">
    <BR>
    Sluttag
    <INPUT TYPE="text" NAME="aTagEnd" SIZE="80" VALUE="</b>">
    <BR>
    <INPUT TYPE="button" VALUE="Indsæt" ONCLICK="insertAtCaret(this.form.aTextArea,this.form.aText.value,this.form.aTagStart.value,this.form.aTagEnd.value);">
    </FORM>
    </BODY>
    </HTML>
Avatar billede fangel Nybegynder
05. marts 2003 - 08:24 #5
det virker, ikke helt efter hesigten, men det virker...

små ting du godt må se om du kan rette

1), <b> og </b> skal inde umidbart rundt om det markerede tekst (jeg har set det før, men kan ikke huske hvor...)

2), hvis man bare skal smide et tegn ind (som fx ":)"), skal dette køres ved markøren...

ved ikke om det er fordi jeg kører Mozilla at det ikke virker, men det skal virke, også i mozilla...

Morten
Avatar billede horsmark Nybegynder
05. marts 2003 - 09:18 #6
<HTML>
<HEAD>
<SCRIPT>
    function storeCaret (textEl) {
    if (textEl.createTextRange)
        textEl.caretPos = document.selection.createRange().duplicate();
    }
    function insertAtCaret (textEl, text, StartTag, EndTag) {
      if (textEl.createTextRange && textEl.caretPos) {
        var caretPos = textEl.caretPos;
        if(text!=""){
          caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
        }else{
          caretPos.text = StartTag + caretPos.text + EndTag;
        }
      }
      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);">
    Hej hej Vi skal indsætte spændende tekster her.
    </TEXTAREA>
    <BR>
    <INPUT TYPE="text" NAME="aText" SIZE="80" VALUE="testhest">
    <BR>
    <INPUT TYPE="button" VALUE="Indsæt" ONCLICK="insertAtCaret(this.form.aTextArea,this.form.aText.value,this.form.aTagStart.value,this.form.aTagEnd.value);">
    <BR><BR>
    Starttag
    <INPUT TYPE="text" NAME="aTagStart" SIZE="10" VALUE="<b>">
    <BR>
    Sluttag
    <INPUT TYPE="text" NAME="aTagEnd" SIZE="10" VALUE="</b>"><br>
    <INPUT TYPE="button" VALUE="Omslut med tags" ONCLICK="insertAtCaret(this.form.aTextArea,'',this.form.aTagStart.value,this.form.aTagEnd.value);">
</FORM>
</BODY>
</HTML>
Avatar billede fangel Nybegynder
05. marts 2003 - 17:07 #7
din kode virker 99.9% i IE... man skal have ændret i formen for at det virke, men det er jo fordi storeCaret først bliver kaldt ved ændring af <textarea>'et... men ellers virker det i IE...

MEN, det virker ikke i Mozilla... kan koden komme til at virke i Mozilla???

Morten
Avatar billede horsmark Nybegynder
05. marts 2003 - 17:08 #8
tja hvis du skal have en 100% x-browserversion kan jeg ikke hjælpe dig mere end jeg allerede har gjort :-)
Avatar billede fangel Nybegynder
05. marts 2003 - 17:11 #9
OK...

smider du en onLoad="storeCaret(.....);" ind i <body> tag'et, så bliver jeg glad, og så for du point... så laver jeg et andet spm med noget mozilla kompatibilitet...

Morten
Avatar billede horsmark Nybegynder
05. marts 2003 - 17:23 #10
Hmm hvad vil du opnå ? *S*

storeCaret betyder jo direkte oversat at fange cursorens placering i textarea´et så hvis du har en onload dvs. udfør når siden er færdigloadet ja så kokser det jo eftersom man jo skal vælge hvor i textareat der skal indsættes kode...
Avatar billede fangel Nybegynder
05. marts 2003 - 17:36 #11
horsmark => det har du ret i, den havde jeg ikke lige fanget... så får du bare point'ene...

Morten
Avatar billede horsmark Nybegynder
05. marts 2003 - 17:57 #12
oki... førnøjelsen er på min side :-)
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