Avatar billede ban_me Nybegynder
24. maj 2005 - 10:07 Der er 36 kommentarer

Overfør til textarea

Hi experts

Nogle kloge hoveder der kan fortælle mig hvordan man overføre et klik på et billede, til f.eks. et ':)' tegn i et givent texarea. både fra den aktuelle side, samt fra et popup-vindue.

Udover det kunne jeg godt tænke mig at vide hvordan man laver en replace, så den f.eks. tolker ':)' som ../img/smileys/happysmiley.gif når den læser fra databasen!

På forhånd tak!
Avatar billede fennec Nybegynder
24. maj 2005 - 10:13 #1
replace:
<%= replace(rs("tekst"),":)","<img src='../img/smileys/happysmiley.gif '>") %>
Avatar billede ban_me Nybegynder
24. maj 2005 - 10:32 #2
Tak, det var svar på det ene spørgsmål. Så mangler jeg bare på de andre :)
Avatar billede ban_me Nybegynder
24. maj 2005 - 10:47 #3
Hvorfor forekommer denne fejl?
Microsoft VBScript compilation error '800a0414'

Cannot use parentheses when calling a Sub

/walid/pages/tagwall.asp, line 74

replace(rs(":)"),":)","<img src='../gfx/smilies/10.gif '>")
-----------------------------------------------------------^
Avatar billede ban_me Nybegynder
24. maj 2005 - 10:49 #4
Min kode ser sådan her ud:
replace(rs("body"),":)","<img src='../gfx/smilies/10.gif '>")
Avatar billede fennec Nybegynder
24. maj 2005 - 10:59 #5
Du skal gemme eller udskrive resultatet af funktionen.

temp = replace(rs("body"),":)","<img src='../gfx/smilies/10.gif '>")
response.write replace(rs("body"),":)","<img src='../gfx/smilies/10.gif '>")
Avatar billede ban_me Nybegynder
24. maj 2005 - 11:02 #6
Hvad skal jeg angive, der hvor der står temp ?
Avatar billede ban_me Nybegynder
24. maj 2005 - 11:02 #7
Og det er jo flere smilies jeg skal udskrive, så den skal vel ikke hedde:
response.write replace(rs("body"),":)","<img src='../gfx/smilies/10.gif '>")
Avatar billede fennec Nybegynder
24. maj 2005 - 11:03 #8
Indsæt :) fra knap eller billed:

<form name="myForm" method="post">
<textarea id="temp" name="temp" cols="40" rows="4"></textarea><br>
<input type="Button" value=":)" onClick="this.form.temp.value = this.form.temp.value + ':)'"><br>
<img src="smily.gif"  onClick="document.getElementById('temp').value = document.getElementById('temp').value + ':)'">
</form>
Avatar billede fennec Nybegynder
24. maj 2005 - 11:11 #9
Replace() funktionen erstatter alle forkomster af :) med <img..> som er i rs("body").

Du udskriver rs("body") et sted i din kode nu (sikkert med <%= rs("body") %>). Der skal du bare smide replacen omkring (Så det bliver <%= replace(rs("body"),":)","<img...>"> %>)

Har du flere forskellige smilies?? F.eks
:) = <img src='../gfx/smilies/10.gif'>
;) = <img src='../gfx/smilies/11.gif'>
:D = <img src='../gfx/smilies/12.gif'>

For så skal der nok laves en special funktion til at udskifte dem.
Avatar billede ban_me Nybegynder
24. maj 2005 - 11:12 #10
Ja, det har jeg!
Avatar billede fennec Nybegynder
24. maj 2005 - 11:24 #11
function replaceSmily(funkText)
dim funkTemp
  funkTemp = funkText&""
  funkTemp = replace(funkText,":)","<img src='../gfx/smilies/10.gif'")
  funkTemp = replace(funkText,";)","<img src='../gfx/smilies/11.gif'")
  funkTemp = replace(funkText,":D","<img src='../gfx/smilies/12.gif'")
  '...
  '...
  replaceSmily = funkTemp
end function

Også kalder du bare den funktion i stedet for replace():
<%= replaceSmily(rs("body")) %>
Avatar billede fennec Nybegynder
24. maj 2005 - 11:26 #12
Manglede lige en > på img tag'et:

function replaceSmily(funkText)
dim funkTemp
  funkTemp = funkText&""
  funkTemp = replace(funkText,":)","<img src='../gfx/smilies/10.gif'>")
  funkTemp = replace(funkText,";)","<img src='../gfx/smilies/11.gif'>")
  funkTemp = replace(funkText,":D","<img src='../gfx/smilies/12.gif'>")
  '...
  '...
  replaceSmily = funkTemp
end function

Også kalder du bare den funktion i stedet for replace():
<%= replaceSmily(rs("body")) %>
Avatar billede ban_me Nybegynder
24. maj 2005 - 11:30 #13
Har lige fundet en version, som jeg heller vil bruge.

Min smiley billede ser sådan her ud:
<td align="center"><img src='gfx/smilies/01.gif' id='smiley1' alt='Indsæt' title='Indsæt' onclick="addSmiley(':)');" style='cursor:hand;' /></td>

Mit textarea ser sådan her ud:
response.write("<textarea id='smiliestextarea' name='body' cols='86' class='textareas'  onselect='storeCaret(this);' onchange='storeCaret(this);countLetters(this);' onclick='storeCaret(this);' onkeydown='storeCaret(this);countLetters(this);' onkeyup='storeCaret(this);countLetters(this);'>"& body &"</textarea>")

Og min funktion ser sådan her ud:
  <!-- Spærring ved for mange tegn -->
  <script type='text/javascript'>
  function addSmiley(strTag){
  var textEl = mainForm._smiliestextarea;
  if(textEl.createTextRange && textEl.caretPos){
  var caretPos = textEl.caretPos;
  caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? strTag + ' ' : strTag;
  }else{
  textEl.value = strTag;
  }
  }
  </script>




....Men kan ikke rigtigt få det til at virke. Kan du se hvad der er galt ?
Avatar billede fennec Nybegynder
24. maj 2005 - 11:40 #14
Kunne se ud som om du ikke har alle funktionerne med. Du mangler en storeCaret() og countLetters() funktion.
Avatar billede fennec Nybegynder
24. maj 2005 - 11:41 #15
Har du evt evt et link. Så er det nemmere at se hvor fejlen er....
Avatar billede ban_me Nybegynder
24. maj 2005 - 11:50 #16
storeCaret() og countLetters() Er med, men har bare plukket dem ud, da de ingen relvans har til mine smileys!

Den melder ingen fejl. Den virker bare ikke :)
Avatar billede fennec Nybegynder
24. maj 2005 - 11:55 #17
Prøv at udskifte:
var textEl = mainForm._smiliestextarea;

med:
var textEl = document.getElementById('smiliestextarea')
Avatar billede ban_me Nybegynder
24. maj 2005 - 12:00 #18
Tak, det virkede :)
Avatar billede ban_me Nybegynder
24. maj 2005 - 12:01 #19
Hvad skal jeg så udskrive der hvor min besked er? Altså for at få mine smilies udskrevet?
Avatar billede fennec Nybegynder
24. maj 2005 - 12:19 #20
(post 11:26:16)
Du skal bare have replaceSmily() funktionen ind på din side, også kalder du den når du udskriver:

<%= replaceSmily(rs("body")) %>
Avatar billede ban_me Nybegynder
24. maj 2005 - 12:26 #21
HVad skal jeg indsætte der hvor der står Funktext?
Avatar billede ban_me Nybegynder
24. maj 2005 - 12:35 #22
Og hvorfor lige er det at der står funktemp nede i bunden?
Avatar billede fennec Nybegynder
24. maj 2005 - 12:41 #23
Min fejl...
Funktionen skal være sådan:

function replaceSmily(funkText)
dim funkTemp
  funkTemp = funkText&""
  funkTemp = replace(funkTemp,":)","<img src='../gfx/smilies/10.gif'>")
  funkTemp = replace(funkTemp,";)","<img src='../gfx/smilies/11.gif'>")
  funkTemp = replace(funkTemp,":D","<img src='../gfx/smilies/12.gif'>")
  '...
  '...
  replaceSmily = funkTemp
end function

Også skulle den kunne bruges som den er. Du skal bare tilføje alle de smilies du har til listen. Du skal være opmærksom på, at det ikke er ligemeget hvilken række følge de står i, hvis dele af en smily går igen i en anden.

F.eks
:)
*<():)

Der skal "*<():)" stå før :), ellers udskiftes :) delen af nissen med et billed, også findes "*<():)" ikke længre i teksten.
Avatar billede fennec Nybegynder
24. maj 2005 - 12:44 #24
Har du ikke arbejdet med funktioner i ASP før???
Avatar billede ban_me Nybegynder
24. maj 2005 - 12:58 #25
Nej, har aldrig arbejdet med funktioner :)

Men det virker stadig ikke.
Bruger denne her nu:
Men får følgende fejl i på denne linje: response.write(""  & replaceSmily(rs("body")) & "")

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'replaceSmily'

/walid/pages/tagwall.asp, line 110




---
  <!-- Spærring ved for mange tegn -->
  <script type='text/javascript'>
  function storeCaret(textEl) {
  if (textEl.createTextRange){
  textEl.caretPos = document.selection.createRange().duplicate();
  }
  }

  var maxletters = 700;
  function countLetters(tbbody){
  if(tbbody.value.length >= maxletters){
  tbbody.value = tbbody.value.substring(0, maxletters);
  }
  document.getElementById('lettercount').innerHTML = (maxletters - tbbody.value.length);
  }

  function addSmiley(strTag){
var textEl = document.getElementById('smiliestextarea')
  if(textEl.createTextRange && textEl.caretPos){
  var caretPos = textEl.caretPos;
  caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? strTag + ' ' : strTag;
  }else{
  textEl.value = strTag;
  }
  }
  end function
  function replaceSmily(funkText)
dim funkTemp
  funkTemp = funkText&""
  funkTemp = replace(funkText,":nice:","<img src='../gfx/smilies/01.gif'>")
  funkTemp = replace(funkText,":angry_gangster:","<img src='../gfx/smilies/02.gif'>")
  funkTemp = replace(funkText,":soldier:","<img src='../gfx/smilies/03.gif'>")
  funkTemp = replace(funkText,":whatever:","<img src='../gfx/smilies/04.gif'>")
  funkTemp = replace(funkText,":suprised:","<img src='../gfx/smilies/05.gif'>")
    funkTemp = replace(funkText,":sarcastic:","<img src='../gfx/smilies/06.gif'>")
      funkTemp = replace(funkText,":dead:","<img src='../gfx/smilies/07.gif'>")
        funkTemp = replace(funkText,":star:","<img src='../gfx/smilies/08.gif'>")
          funkTemp = replace(funkText,":disgusting:","<img src='../gfx/smilies/09.gif'>")
            funkTemp = replace(funkText,":)","<img src='../gfx/smilies/10.gif'>")
              funkTemp = replace(funkText,":sad:","<img src='../gfx/smilies/11.gif'>")
                funkTemp = replace(funkText,":veryangry:","<img src='../gfx/smilies/13.gif'>")

  replaceSmily = funkTemp



  </script>
Avatar billede fennec Nybegynder
24. maj 2005 - 13:08 #26
replaceSmily() er en ASP funktion og skal først bruges når du udskriver teksten fra databasen igen, så den skal slet ikke være sammen med addSmiley() funktionen som er en JavaScript funktion. Desuden skal de stå i ASP koden så den skal være inde i en <% %> blok.
Avatar billede ban_me Nybegynder
24. maj 2005 - 13:23 #27
Så kommer følgende fejl:
Microsoft VBScript compilation error '800a03ea'

Syntax error

/walid/pages/tagwall.asp, line 74

function replaceSmily(funkText)
Avatar billede fennec Nybegynder
24. maj 2005 - 13:43 #28
Smid lige hele din kode ind. Det er vist det bedste....
Avatar billede ban_me Nybegynder
24. maj 2005 - 13:49 #29
Et udpluk af koden:
---------------
SQL = "SELECT id, author, body, addeddate, addedtime, ip, website, email, topic FROM tagwall ORDER BY id DESC; "
set RS = conn.execute(SQL)
start = antal_beskeder_pr_side * (pagenumber - 1)
count = 0

'Starter selve tabellen hvori beskeden ligger!

  function replaceSmily(funkText)
  dim funkTemp
  funkTemp = funkText&""
  funkTemp = replace(funkText,":nice:","<img src='../gfx/smilies/01.gif'>")
  funkTemp = replace(funkText,":angry_gangster:","<img src='../gfx/smilies/02.gif'>")
  funkTemp = replace(funkText,":soldier:","<img src='../gfx/smilies/03.gif'>")
  funkTemp = replace(funkText,":whatever:","<img src='../gfx/smilies/04.gif'>")
  funkTemp = replace(funkText,":suprised:","<img src='../gfx/smilies/05.gif'>")
  funkTemp = replace(funkText,":sarcastic:","<img src='../gfx/smilies/06.gif'>")
  funkTemp = replace(funkText,":dead:","<img src='../gfx/smilies/07.gif'>")
  funkTemp = replace(funkText,":star:","<img src='../gfx/smilies/08.gif'>")
  funkTemp = replace(funkText,":disgusting:","<img src='../gfx/smilies/09.gif'>")
            funkTemp = replace(funkText,":)","<img src='../gfx/smilies/10.gif'>")
              funkTemp = replace(funkText,":sad:","<img src='../gfx/smilies/11.gif'>")
                funkTemp = replace(funkText,":veryangry:","<img src='../gfx/smilies/13.gif'>")

  replaceSmily = funkTemp

  end function


If RS.EOF then
  response.write("Ingen beskeder fundet i databasen")
else
  do while not RS.EOF and count < antal_beskeder_pr_side
  if start > 0 then
    start = start - 1
  else
 
  If blnBGColor = True Then
  strBGColor = "#EFF7FF"
  blnBGColor = False
Else
  strBGColor = "#F8F8F8"
  blnBGColor = True
End If

    response.write("<table bgcolor='"& strBGColor &"' width='630' align='center' cellpadding='0' cellspacing='10' class='table_bluelight'>")
    response.write("<tr>")
    response.write("<td><table width='100%' border='0' cellpadding='0' cellspacing='0'>")
    response.write("<tr>")
    response.write("<td class='textheader' width='63%' height='18'>")
    response.write(""  & RS("topic") & "")
    response.write("</td>")
    response.write("<td width='37%' align='right' valign='top'>")
    response.write(" <font color='#999999' class='textfade'>" & formatdatetime(RS("addeddate"),1) & "  kl. " & formatdatetime(RS("addedtime"),4) & "</a></font>  ")
    response.write("</td>")
    response.write("</tr>")
    response.write("</table>")
    response.write("</td>")
    response.write("</tr>")
    response.write("<tr>")
    response.write("<td><table width='100%' border='0' cellpadding='0' cellspacing='5' class='textnormal'>")
    response.write("<tr>")
    response.write("<td>")
    response.write(""  & replaceSmily(rs("body")) & "")
    response.write("</td>")
    response.write("</tr>")
    response.write("</table>")
    response.write("</td>")
    response.write("</tr>")
    response.write("<tr>")
    response.write("<td height='18'><table width='100%' border='0' cellpadding='0' cellspacing='0' class='textfade'>")
    response.write("<tr>")
    response.write("<td valign='top'>")
    response.write("// " & RS("author") & "")
    response.write("</td>")
    response.write("<td align='right' valign='bottom'>")
Avatar billede fennec Nybegynder
24. maj 2005 - 15:40 #30
Det er den forkerte function du har fået ind. Der var jo fejl i de første. Du skal bruge denne, ellers er det kun veryangry smily der bliver udskiftet:

function replaceSmily(funkText)
  dim funkTemp
  funkTemp = funkText&""
  funkTemp = replace(funkTemp,":nice:","<img src='../gfx/smilies/01.gif'>")
  funkTemp = replace(funkTemp,":angry_gangster:","<img src='../gfx/smilies/02.gif'>")
  funkTemp = replace(funkTemp,":soldier:","<img src='../gfx/smilies/03.gif'>")
  funkTemp = replace(funkTemp,":whatever:","<img src='../gfx/smilies/04.gif'>")
  funkTemp = replace(funkTemp,":suprised:","<img src='../gfx/smilies/05.gif'>")
  funkTemp = replace(funkTemp,":sarcastic:","<img src='../gfx/smilies/06.gif'>")
  funkTemp = replace(funkTemp,":dead:","<img src='../gfx/smilies/07.gif'>")
  funkTemp = replace(funkTemp,":star:","<img src='../gfx/smilies/08.gif'>")
  funkTemp = replace(funkTemp,":disgusting:","<img src='../gfx/smilies/09.gif'>")
  funkTemp = replace(funkTemp,":)","<img src='../gfx/smilies/10.gif'>")
  funkTemp = replace(funkTemp,":sad:","<img src='../gfx/smilies/11.gif'>")
  funkTemp = replace(funkTemp,":veryangry:","<img src='../gfx/smilies/13.gif'>")
  replaceSmily = funkTemp
end function
Avatar billede ban_me Nybegynder
24. maj 2005 - 15:49 #31
Når jeg følger dit eksempel med replace, får jeg bare følgende fejl:

Microsoft VBScript runtime error '800a005e'

Invalid use of Null: 'replace'

/walid/includes/functions.asp, line 71


Tror umiddelbart ikke at min fortolker forstår det! Eller hvad?
Avatar billede fennec Nybegynder
24. maj 2005 - 15:57 #32
Det er fordi man ikke kan lave en replace på en NULL værdi. Hvis din body f.eks er tom. Den burde bare komme uden om det med:
funkTemp = funkText&""

Prøv evt at ændre den linje til:
funkTemp = funkText&"**"

Så kommer der godt nok et par stjerne efter teksten, men det er bare for at være 100% sikker på at der står noget.
Avatar billede ban_me Nybegynder
24. maj 2005 - 20:01 #33
Stadig samme fejl.

Er også helt sikker på at min database ikke er tom :)
Avatar billede fennec Nybegynder
25. maj 2005 - 10:13 #34
Hvilken linje er line 71 i functions.asp??
Avatar billede ban_me Nybegynder
25. maj 2005 - 10:24 #35
Har fundet ud af det
-----
Function replaceSmilies(s)
   
    If (Len(s) = 0) Then
        replaceSmilies = ""
        Exit Function
    End If
   
  s = replace(s,":nice:","<img src='../walid/gfx/smilies/01.gif'>")
  s = replace(s,":angry_gangster:","<img src='../walid/gfx/smilies/02.gif'>")
  s = replace(s,":soldier:","<img src='../walid/gfx/smilies/03.gif'>")
  s = replace(s,":whatever:","<img src='../walid/gfx/smilies/04.gif'>")
  s = replace(s,":suprised:","<img src='../walid/gfx/smilies/05.gif'>")
  s = replace(s,":sarcastic:","<img src='../walid/gfx/smilies/06.gif'>")
  s = replace(s,":dead:","<img src='../walid/gfx/smilies/07.gif'>")
  s = replace(s,":star:","<img src='../walid/gfx/smilies/08.gif'>")
  s = replace(s,":disgusting:","<img src='../walid/gfx/smilies/09.gif'>")
  s = replace(s,":)","<img src='../walid/gfx/smilies/10.gif'>")
  s = replace(s,":sad:","<img src='../walid/gfx/smilies/11.gif'>")
  s = replace(s,":veryangry:","<img src='../walid/gfx/smilies/13.gif'>")

    replaceSmilies = s
   
End Function


Mange tak for hjælpen!
Ligger du lige et svar - så du kan få point?
Avatar billede fennec Nybegynder
25. maj 2005 - 12:21 #36
.o) <-- One Eyed Jack
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
Kurser inden for grundlæggende programmering

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