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
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
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>
04. marts 2003 - 21:39
#2
05. marts 2003 - 07:58
#3
tester det i dag efter 14:30... kan du også spm 2?
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>
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
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>
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
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 :-)
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
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...
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
05. marts 2003 - 17:57
#12
oki... førnøjelsen er på min side :-)
Vi tilbyder markedets bedste kurser inden for webudvikling