webForumDet fria alternativet

Oavslutat strängkonstant

ASP

23 svar · 1 004 visningar · startad av Melea

Medlem sedan juli 20033 147 inlägg
Frågan#1

Herregud, blir tokig, ser inte vad felet är...

<%
Function textEncode(str)
  str = Replace(str, "'", "''")
  str = Replace(str, "<%","&lt;&_#37;")
  str = Replace(str, "%>","&_#37;&gt;")
  str = Replace(str, "<?","&lt;&[b]_[/b]#63;")
  str = Replace(str, "?>","&[b]_[/b]#63;&gt;")
  textEncode = str
End Function
%>

_ tecknena finns inte med i koden :)
Feltyp:
Kompileringsfel i Microsoft VBScript (0x800A0409)
Oavslutad strängkonstant
/aspkurs/admin/funktioner.asp, line 5, column 20
str = Replace(str, "
-------------------^

Vad kan detta bero på? :OO

Medlem sedan juli 20033 147 inlägg
#2

Hm, såg att det blev ett frågetecken därefter automatiskt, det finns alltså inte med i koden...

Medlem sedan juni 200032 967 inlägg
#3

Du får inte ha kontext-switchar utskrivna, utan du får dela på dem.

<%
Function textEncode(str)
  str = Replace(str, "'", "''")
  str = Replace(str, "<" & "%","&lt;%")
  str = Replace(str, "%" & ">","%&gt;")
  str = Replace(str, "<?","&lt;?")
  str = Replace(str, "?>","?&gt;")
  textEncode = str
End Function
%>

Mvh

Medlem sedan juli 20033 147 inlägg
#4

De tackar vi för :)

Mvh

Medlem sedan juli 20033 147 inlägg
#5

Kan lika gärna fortsätta på den här tråden istället för att skapa en ny eftersom jag använder just den koden som jag visar här ovan för att ta bort ASP och PHP kod som postas i ett forum. Jag vill dock att all form av HTML ska fungera men de gör de inte riktigt :(

Eller, ska rätta mig, det funkar men det blir minst sagt "buggigt".

När jag skapar en tabell

<table cellspacing='0' cellpadding='3' border='1' width='617'>
<tr bgcolor='#CCCCCC'>
<td>Namn</td>
<td>Alder</td>
<td>Bostad</td>
<td>Intresse</td>
</tr>
<tr>
<td>Jonas S</td>
<td>18</td>
<td>Kalmar: Villa</td>
<td>Datorer</td>
</tr>
<tr>
<td>Filip P</td>
<td>13</td>
<td>Stockholm: Lägenhet</td>
<td>Kompisar och fotboll</td>
</tr>
<tr>
<td>Jonas K</td>
<td>41</td>
<td>Göteborg: Lägenhet</td>
<td>Jobbar med datorer</td>
</tr>
<tr>
<td>Filip V</td>
<td>25</td>
<td>Visby: Villa</td>
<td>Fotografering och fotboll</td>
</tr>
</table>

Så blir det som ett långt mellanrum ovanför tabellen innan den visas. Om jag sedan prövar att klistra in tabellen i ett vanligt ASP / HTML / PHP dokument så funkar det prima.

Någon som vet var felet kan ligga ngnstans?

Tack på förhand

Mvh

Medlem sedan okt. 20023 030 inlägg
#6

Troligtvis inte det som är felet men du bör byta ut dina enkelfnuttar mot dubbelfnuttar. (' mot ")

Medlem sedan juli 20033 147 inlägg
#7

Hade det från början men gav samma fel.

Medlem sedan juni 200032 967 inlägg
#8

Det känns inte som att det är det här det är fel på. Hur ser koden runt omkring ut; och har du en url där vi kan se fenomenet?

(Det spelar ingen roll om man har apostrofer eller citationstecken som avgränsare i HTML.)

Mvh

Medlem sedan juli 20033 147 inlägg
#9

.

Medlem sedan juni 200032 967 inlägg
#10

Har du någonstans en replace från vbcrlf till <br>?

Det ligger en <br> efter varje </td>, och taggar som ligger felaktigt i en tabell (ofta radbrytningar) brukar webbläsaren lägga ovanför.

Mvh

Medlem sedan juli 20033 147 inlägg
#11

Där låg felet.

<%=Replace( str,vbCrLf,"<br>")%>

Hur kan jag lösa detta?

Mvh

/Red Tog helt enkelt borg alla "<br>" efter <table><tr><td> så nu funkar de fint ;)

Medlem sedan okt. 20023 030 inlägg
#12

@ skrev:

Det spelar ingen roll om man har apostrofer eller citationstecken som avgränsare i HTML.

Där ser man. :OO

Trodde endast det gällde för javascript och css. ;)

Medlem sedan juli 2003162 inlägg
#13

Melea skrev:

:h *Secret* :h

<table cellspacing='0' cellpadding='3' border='1' width='617'>[red]<br>[/red]
 <tr bgcolor='#AAAAAA'>[red]<br>[/red]
  <td>Namn</td>[red]<br>[/red]
  <td>Alder</td>[red]<br>[/red]
  <td>Bostad</td>[red]<br>[/red]
  <td>Intresse</td>[red]<br>[/red]
 </tr>[red]<br>[/red]
 <tr>[red]<br>[/red]
  <td>Jonas S</td>[red]<br>[/red]
  <td>18</td>[red]<br>[/red]
  <td>Kalmar: Villa</td>[red]<br>[/red]
  <td>Datorer</td>[red]<br>[/red]
 </tr>[red]<br>[/red]
 <tr>[red]<br>[/red]
  <td>Filip P</td>[red]<br>[/red]
  <td>13</td>[red]<br>[/red]
  <td>Stockholm: Lägenhet</td>[red]<br>[/red]
  <td>Kompisar och fotboll</td>[red]<br>[/red]
 </tr>[red]<br>[/red]
 <tr>[red]<br>[/red]
  <td>Jonas K</td>[red]<br>[/red]
  <td>41</td>[red]<br>[/red]
  <td>Göteborg: Lägenhet</td>[red]<br>[/red]
  <td>Jobbar med datorer</td>[red]<br>[/red]
 </tr>[red]<br>[/red]
 <tr>[red]<br>[/red]
  <td>Filip V</td>[red]<br>[/red]
  <td>25</td>[red]<br>[/red]
  <td>Visby: Villa</td>[red]<br>[/red]
  <td>Fotografering och fotboll</td>[red]<br>[/red]
 </tr>[red]<br>[/red]
</table>
<br>
<br>
<br>

Ser detta inte lite konstigt ut? :e

Kom ihåg: De <br> du skriver, i en tabell, utanför en <td> skrivs alltid ÖVER tabellen... så gissa varför tabellen går så långt ner ;) !

Har rödmarkerat felet!

Medlem sedan juni 200032 967 inlägg
#14

Melea skrev:

Där låg felet.

<%=Replace( str,vbCrLf,"<br>")%>

Hur kan jag lösa detta?

Som jag ser det; ska du tillåta html så bör du tvinga användaren att skriva <br> istället för att trycka enter, dvs ta bort den replacen. Det är inte logiskt att ersätta enter till radbrytning, eftersom inte webbläsarna tolkar koden på det sättet.

Det är möjligt att det går att få till ett RegExp-mönster som klarar att göra ersättningen hyggligt, men jag har svårt att tänka mig det, med tanke på hur HTML fungerar, dvs i vissa taggar kan du ha radbrytningar, och i andra inte. Får du till ett sånt RegExp-mönster är du duktig. :)

- - - - -

Nexus: Det är dock snyggast IMHO att använda citationstecken i HTML och apostrofer i övrigt (javascript / css), även om det går att göra som man vill. Så länge man är konsekvent är det dock lugnt. ;)

Mvh

Medlem sedan juli 20033 147 inlägg
#15

Wickmark, kan du ta bort länken från inlägget så är du gullig? :)

Sidan är långt ifrån klar.

Medlem sedan juli 2003162 inlägg
#16

@nders skrev:

Melea skrev:

Där låg felet.

<%=Replace( str,vbCrLf,"<br>")%>

Hur kan jag lösa detta?

Som jag ser det; ska du tillåta html så bör du tvinga användaren att skriva <br> istället för att trycka enter, dvs ta bort den replacen. Det är inte logiskt att ersätta enter till radbrytning, eftersom inte webbläsarna tolkar koden på det sättet.

Det är möjligt att det går att få till ett RegExp-mönster som klarar att göra ersättningen hyggligt, men jag har svårt att tänka mig det, med tanke på hur HTML fungerar, dvs i vissa taggar kan du ha radbrytningar, och i andra inte. Får du till ett sånt RegExp-mönster är du duktig. :)

- - - - -

Nexus: Det är dock snyggast IMHO att använda citationstecken i HTML och apostrofer i övrigt (javascript / css), även om det går att göra som man vill. Så länge man är konsekvent är det dock lugnt. ;)

Mvh

Går det inte göra ngt javascript som automatiskt skriver <br> (eller <br />) varje gång man klickar på enter i textfältet?

Medlem sedan juli 2003162 inlägg
#17

Melea skrev:

Wickmark, kan du ta bort länken från inlägget så är du gullig? :)

Sidan är långt ifrån klar.

Fixat :h

Medlem sedan juni 200032 967 inlägg
#18

Wickmark skrev:

Går det inte göra ngt javascript som automatiskt skriver <br> (eller <br />) varje gång man klickar på enter i textfältet?

Jo, problemet är väl att det inte (vad jag lyckats lista ut i alla fall) går att göra en sådan insättning i en textarea på en viss punkt (där markören är), utan det man slänger in kommer att hamna sist i textarean.

Mvh

Medlem sedan juli 2003162 inlägg
#19

@nders skrev:

Wickmark skrev:

Går det inte göra ngt javascript som automatiskt skriver <br> (eller <br />) varje gång man klickar på enter i textfältet?

Jo, problemet är väl att det inte (vad jag lyckats lista ut i alla fall) går att göra en sådan insättning i en textarea på en viss punkt (där markören är), utan det man slänger in kommer att hamna sist i textarean.

Mvh

OK! Då tar jag väl och slänger ihop en tråd i Javascript delen :e

Medlem sedan juli 2003162 inlägg
#20

Hier har vi javascriptkoden, skriven av Joxjox!

<textarea onkeydown="if(event.keyCode==13){ document.selection.createRange().text='<br>'; }"></textarea>

Stort tack till Jojoxx! :birp

UPPDATERING

<script type="text/javascript">
if (!document.all){ document.captureEvents(Event.KEYDOWN|Event.KEYUP); } 
var selectedElement=null;
document.onkeydown = function(e){
   if(!document.all){ event=e; }
   if(event.keyCode==13&&selectedElement){
      if(document.all){
         document.selection.createRange().text="<br>";
      } else {
         var selStart = selectedElement.selectionStart;
         var insText="<br/>";
         selectedElement.value=selectedElement.value.substring(0,selStart)+insText+selectedElement.value.substring(selectedElement.selectionEnd,selectedElement.value.length);
         selectedElement.setSelectionRange(selStart+insText.length,selStart+insText.length);
      }
   }
}
</script>

<form>
<textarea onfocus="selectedElement=this;" onblur="selectedElement=null;"></textarea>
</form>
268 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)