Avatar billede lasseriis Nybegynder
28. september 2002 - 12:43 Der er 7 kommentarer og
1 løsning

indsæt streng i textarea

Hejs (undskyld den latterlige titel, men det kan ikke beskrives med ret få tegn)

Jeg skal bruge noget kode som indsætter strengen '<billede></billede>' i et textarea, allerhelst skulle det også omgive sig selv med nye linier:

tekst før: ( | = cursor)
"Her er noget tekst som mangler et billede.| Her er er billedet."

tekst efter (tryk på en knap som startet javascriptet)
"Her er noget tekst som mangler et billede.
<billede></billede>
Her er er billedet."

Kan det lade sig gøre? strengen skal altså indsættes der  hvor cursoren står!

Og jeg ville da ikke ligefrem skrige hvis koden også fungerer i mozilla!
Avatar billede lequet Nybegynder
28. september 2002 - 14:00 #1
Følgende er en ikke helt perfekt løsning. Den skulle meget gerne virker fra IE 4.0 og opefter. Håber du kan bruge den

<script type="text/javascript">
  function insertText() {
    document.forms['formnavn'].ditTextArea.focus() ;
    range = document.selection.createRange() ;
           
    range.text = "<billede></billede>" ;
  }
</script>

<a href="java script:insertText()">Klik her</a>
Avatar billede lasseriis Nybegynder
28. september 2002 - 14:31 #2
Det virker ok, men er det muligt at få den til at gøre det, ligemeget hvor cursoren er?, Nogen gange er der nemlig flere <textarea>. (navngivet tekst[0], tekst[1] osv.)?
Avatar billede Slettet bruger
28. september 2002 - 15:29 #3
Avatar billede lequet Nybegynder
29. september 2002 - 00:13 #4
Den er lidt tricky... Du skal først finde ud af hvilket textarea cursoren var placeret i, inden klik på linket. Det kan du gøre sådan her :

<textarea onFocus="hvilket = 'textarea1'" name="textarea1">

<textarea onFocus="hvilket = 'textarea2'" name="textarea2">

Læg mærke til at name og 'hvilket' er ens, det er med vilje!

Derefter skal du ombygge min tidligere kode en smule, sådan her :

<a href="java script:insertText(hvilket)">Klik her</a>

<script type="text/javascript">
  function insertText(hvilket) {
    var temp = "document.forms['formnavn']." + hvilket + ".focus()" ;
    eval(temp) ;

    range = document.selection.createRange() ;
         
    range.text = "<billede></billede>" ;
  }
</script>

Til sidst kan du for god ordens skyld lave en onLoad på body, hvis nu der ikke skulle være placeret nogen cursor i noget textarea inden klik på linket, for at undgå fejl.

<body onLoad="if (hvilket == '') hvilket = 'textarea1'">

Ovenstående er ikke testet, men skulle gerne virke, hvis ellers jeg har undgået tastefejl :) Ved ikke lige med phoenixv's link, kunne ikke lige få overblik over det, men nu har du om ikke andet også mit forslag :)
Avatar billede lequet Nybegynder
29. september 2002 - 00:18 #5
Hovsa, sådan her :) Men nu er det så testet, og det virker

<script type="text/javascript">
  hvilket = "" ;
 
  function insertText(hvilket) {
    var temp = "document.forms['formnavn']." + hvilket + ".focus()" ;
    eval(temp) ;

    range = document.selection.createRange() ;
       
    range.text = "<billede></billede>" ;
  }
</script>
Avatar billede lasseriis Nybegynder
29. september 2002 - 23:50 #6
Kan ikke få det til at du!

Jeg har dette oppe i min <head>:
<script language="JavaScript" type="text/javascript">
<!--
function Tags(eff){
var prestart,preend,start,end,sel,range,thetext,dvsn,theform,formname,eff
formname="tekstForm"
theform=document.forms[formname]

dvsn=["<",">","</"]
prestart=""
preend=""

start=prestart+dvsn[0]+eff+dvsn[1]
end=dvsn[2]+eff+dvsn[1]+preend
sel=document.selection
range=sel.createRange()
thetext=range.text
if (thetext.length){
range.text=start+thetext+end
}}

hvilket = "" ;

  function insertText(hvilket) {
    var temp = "document.forms['tekstForm']." + hvilket + ".focus()" ;
    eval(temp) ;

    range = document.selection.createRange() ;
     
    range.text = "<billede></billede>" ;
  }

//-->
</script>

Det andet script er med, bare sådan at i kan se om det forstyrer...

Nede i <body> har jeg så:
<form name="tekstForm" action="skriv.php" method="post">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><td>Tekst:</td>
<td align="right" valign="bottom">
<img src="gifs/billede.gif" onclick="insertText()" height="20" alt="Indsæt billede"/>
&nbsp;&nbsp;&nbsp;&nbsp;<img src="gifs/fed.gif" onclick="Tags('b')" height="20" alt="Gør den markerede tekst FED"/>
&nbsp;&nbsp;<img src="gifs/kursiv.gif" onclick="Tags('i')" height="20" alt="Gør den markerede tekst KURSIV"/>
&nbsp;&nbsp;<img src="gifs/under.gif" onclick="Tags('u')" height="20" alt="Gør den markerede tekst UNDERSTREGET"/>
&nbsp;&nbsp;&nbsp;&nbsp;</td></tr></table>
<textarea class="felt" onfocus="hvilket = 'tekst'" name="tekst" cols="98" rows="30">

</textarea>
<input class="knap" type="submit" value="Gem"></input>
</form>

Hvad er der galt....jeg får en sød lille 'Der opstod en fejl på siden'!
Avatar billede Slettet bruger
30. september 2002 - 15:52 #7
Brug mit script. Jeg garanterer, at det ikke fremkalder fejl! :)
Avatar billede lasseriis Nybegynder
08. april 2003 - 10:40 #8
phoenixv løb med points....
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



IT-JOB

Danske Andelskassers Bank A/S

IT-konsulent

Cognizant Technology Solutions Denmark ApS

Sr. Test Analyst

PensionDanmark

ML Engineer