Avatar billede webstuff Nybegynder
10. februar 2006 - 01:06 Der er 21 kommentarer og
1 løsning

quote funktion virker kun ved korte beskeder

Jeg er ikke ret skarp til JavaScript, men det lykkedes mig at bikse denne quote funktion sammen til mit forum.
---
<script type="text/javascript">
function quote(tekst){
svaret = ''+tekst+'';
document.all.besked.value+=svaret;
}
</script>
---
Men problemet er at den kun kan bruges på korte beskeder omkring <= 40 tegn.. Nogen der ved hvad jeg kan gøre ved det? :-)
Avatar billede olebole Juniormester
10. februar 2006 - 01:27 #1
Den kan bruges til endog meget lange strenge - så du må lave en eller anden fejl et sted  :)
Avatar billede tjp Mester
10. februar 2006 - 01:34 #2
Hvor kommet input fra og hvad er 'besked'?
Avatar billede webstuff Nybegynder
10. februar 2006 - 01:37 #3
Det kommer på denne måde:
echo "<a href=\"#\" onClick=\"quote('[quote]$row[besked][/quote]');\">QUOTE</a>";

besked == navnet på mit textarea.
Avatar billede webstuff Nybegynder
10. februar 2006 - 01:49 #4
Hov sådan her:
echo "<a href=\"#svar\" onClick=\"quote('[quote]$row[besked][/quote]');\">QUOTE</a>";

Så flytter den også sidens fokus ned på textareaet :-) ved ikke om det har betydning?
Avatar billede olebole Juniormester
10. februar 2006 - 01:51 #5
- det interessante er, hvad der faktisk står ... mon ikke, der er linjebrud i JS-strengen? Prøv at checke, hvad der står, når du ser siden i  ViewSource  ;o)
Avatar billede webstuff Nybegynder
10. februar 2006 - 02:02 #6
Jeg tror det er fordi der kommer linjeskift i koden.
Men hvordan dælen kringler jeg den, for linjeskiftene kommer jo når man skriver beskeden?
Avatar billede webstuff Nybegynder
10. februar 2006 - 02:04 #7
Kan jeg ordne det sådan her:
---
echo "<a href=\"#svar\" onClick=\"quote('[quote]".str_replace("\n",
"",$row[besked])."[/quote]');\">QUOTE</a>";
---
Avatar billede webstuff Nybegynder
10. februar 2006 - 02:04 #8
echo "<a href=\"#svar\" onClick=\"quote('[quote]".str_replace("\n", "",$row[besked])."[/quote]');\">QUOTE</a>";
Avatar billede webstuff Nybegynder
10. februar 2006 - 02:06 #9
Nej det kunne jeg ikke :-(
Avatar billede webstuff Nybegynder
10. februar 2006 - 02:26 #10
Flere ideer?
Avatar billede olebole Juniormester
10. februar 2006 - 02:42 #11
Du skal nok skifte '\r\n' ud med ''  :)
Avatar billede webstuff Nybegynder
10. februar 2006 - 02:52 #12
Du er en skat Ole.. ;o)

Lægger du et svar?:-P
Avatar billede webstuff Nybegynder
10. februar 2006 - 02:52 #13
men hvis \n er linjeskift hvad er \r så?
Avatar billede tjp Mester
10. februar 2006 - 04:14 #14
\r står for Carriage return, dvs. vognretur, hvilket henviser til at skriverullen på en skrivemaskine flyttes helt ud til højre ved fx linjeskift. Vistnok et levn fra de goe gamle fjernskriverdage. ;-)
Avatar billede webstuff Nybegynder
10. februar 2006 - 04:35 #15
Okay.. Mange tak for svaret, men det er ole der får pointene hvis det er i orden? :-)
( og hvis han lægger et svar )
Avatar billede olebole Juniormester
10. februar 2006 - 12:43 #16
Forskellige platforme laver linjeskift forskelligt:
Linux: \n
Windows: \r\n
Apple: \r

Hvis man er så heldig at have kendt de gammeldags, 'akustiske' skrivemaskiner, er logikken ret indlysende:
De havde et håndtag i højre side af valsen - og når en linje var skrevet færdig, tog man fat i valsen og førte den til venstre. Derved førtes valsen retur til startpunktet: 'Carriage Return' ... eller '\r'.

Derefter tvang man håndtaget et par centimeter længere mod venstre, hvorved valsen drejede, svarende til et linkeskift: 'New Line' ... eller '\n'.

Skal det være en hjælp til at huske rækkefølgen, er det dog næsten nødvendigt, man har skrevet på den slags 'dogme' skrivemaskiner - hvilket igen kræver, man har 'en hel del hår på ryggen'. Det er jeg godt klar over, ikke altid er tilfældet her på E  ;o)
Avatar billede webstuff Nybegynder
10. februar 2006 - 14:01 #17
Okay.. Mange tak for det gode forklaring :-)
Men det vil faktisk sige at jeg både skal replace:
str_replace("\n", "", $var);
str_replace("<r\n", "", $var);
og
str_replace("\r", "", $var);

Så er jeg sikker på at det virker på alle platforme?
Avatar billede olebole Juniormester
10. februar 2006 - 14:05 #18
Det kan du godt, men så tag dem i denne rækkefølge:

$var = str_replace("\r\n", "", $var);
$var = str_replace("\r", "", $var);
$var = str_replace("\n", "", $var);
Avatar billede webstuff Nybegynder
10. februar 2006 - 14:44 #19
Det burde vel egentligt være nok bare at bruge:
$var = str_replace("\r", "", $var);
$var = str_replace("\n", "", $var);

Så bliver de jo fjernet alle sammen alligevel.... Eller??
Avatar billede olebole Juniormester
10. februar 2006 - 15:18 #20
Ja, når du blot fjerner tegnet, betyder rækkefølgen ikke noget. Forestil dig derimod, du skulle udskifte med <br> ... så ville rækkefølgen være afgørende.
Det var bare mig, der 'red en tur på principperne'  ;D
Avatar billede webstuff Nybegynder
10. februar 2006 - 19:08 #21
Haha... Okay, må man godt en gang i mellem ;D

Men tusind tak for hjælpen, det var ved at give mig grå hår i hovedet :o)
Avatar billede olebole Juniormester
10. februar 2006 - 19:29 #22
Selvtak ... og tak for 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