Avatar billede bombur Nybegynder
28. maj 2003 - 12:06 Der er 20 kommentarer og
1 løsning

Anslags tælning i javascript

Jeg har brug for at kunne tælle en tekststrengs antal anslag og finde ud af om der i tekststrengen er nogle ord der er for lange!

Jeg har nemlig ikke så meget plads til at skrive tekststrengene ud på i min mini tagwall og hvis ordene bliver for lange vil de fucke op i tabellerne. Jeg skal derfor kunne styre hvor meget brugeren må indtaste i tekstfeltet og sørge for at lange ord bliver splittet op.

her er linket:
http://bombur.klist.dk/

Det kan selvfølgelig være at der er nogle meget smartere måder at løse mit problem på, men så er jeg åben for forslag.

Håber i kan hjælpe
Rune
Avatar billede medions Nybegynder
28. maj 2003 - 12:09 #1
Kør hvert ord igennem ved at lægge dem over i et Array med Split() og lav en Len() på hvert ord for at se om det bliver for langt!

Evt. prøv at forklar lidt bedere hvad det er ham har at arbejde med, evt. giv nogle eksempler!

//>Rune
Avatar billede bombur Nybegynder
28. maj 2003 - 12:29 #2
Jeg er bange for at jeg ikke kan finde ud af at gøre det der, jeg er stadig ret ny i faget :) Lærer lige så langsomt!

Men som du kan se på siden ved linket ovenover ligger problemet ovre til højre i "mini tavlen". Som man kan se er der ikke plads til alle de lange ord vi har i ordbogen. Der er heller ikke plads nedefter til at hver bruger kan skrive mere end 100 anslag. Jeg skal jo derfor have stoppet de to ting.
Jeg vil meget gerne have nogle eksempler da jeg endnu ikke kan opfinde den slags selv! :D

Rune
Avatar billede medions Nybegynder
28. maj 2003 - 13:56 #3
Ok, du kan gøre sådan her:

strTxt = Request.Form("tekst")
arrTXT = Split(strTxt, " ")

For i = 0 To UBound(arrTxt)
  If Len(arrTxt(i)) > 5 Then
    strErr = "Beskeden er for lang!"
  Else
    strTxt = strTxt & " " & arr(i)
  End If
  Next
Next

If strErr <> "" Then
  strTxt = strErr
End If

Response.Write(strTxt)

//>Rune
Avatar billede bombur Nybegynder
28. maj 2003 - 14:02 #4
Lol... jeg kan se du har smadret min tagwall... vandal
Avatar billede bombur Nybegynder
28. maj 2003 - 14:11 #5
Nu har du lavet det i VB script selvfølgelig. men jeg prøver lige at omskrive det til javascript :) Jeg er ikke sikker på browsere kan lide at jeg blander det!
Avatar billede medievil Nybegynder
28. maj 2003 - 14:13 #6
Lytter lidt med ! Har nemlig samme problem ! men:
If Len(arrTxt(i)) > 5 Then

Er det hvor stort hvert ord må være eller???
Avatar billede bombur Nybegynder
28. maj 2003 - 14:18 #7
Arh crap... jeg er en noob... jeg kan ikke finde ud af at oversætte det til Javascript! Funktionerne hedder ikke det samme jo!
Avatar billede medions Nybegynder
28. maj 2003 - 14:30 #8
bombur> Koder du i din ASP i JavaScript? For du kan jo ikke lave det clientsided det du ønsker, eller jov, det skulle nok være muligt, men det er ikke en særlig god ide!

medievil> Med linjen:
If Len(arrTxt(i)) > 5 Then
Tjekker jeg hvor mange bogstaver det enkelte ord består af, hvis det er over 5 bogstaver så ->!

//>Rune
Avatar billede bombur Nybegynder
28. maj 2003 - 14:36 #9
Ja jeg koder min ASP i javascript. Skulle jeg nok have skrevet lidt tydeligere, det står kun i overskriften.
Men det skal laves serverside idet jeg putter informationerne på tagwallen i min database!
Avatar billede medions Nybegynder
28. maj 2003 - 14:40 #10
lol sorrym, min fejl *G*, well det har været en stresset dag, hvad kan jeg sige :oD

Jeg kan desvære ikke hjælpe dig med at lave det så sådan at det bliver JScript, men du kan jo gøre sådan her:

<script language="VBScript" RunAt="Server">
  Koden...
</script>

så skulle det gerne virke alligevel selvom det er VBScript ;o)

//>Rune
Avatar billede bombur Nybegynder
28. maj 2003 - 14:41 #11
Tjaa... det er et forsøg værd... så kan jeg jo poste din kode en anden gang og få nogen til at oversætte det :D
Avatar billede bombur Nybegynder
28. maj 2003 - 14:49 #12
hmm... jeg syntes ikke der sker noget som helst
nu ser koden sådan ud
<%
while(!tagRS.EOF) {
navn = tagRS.Fields("navn");
strTxt = tagRS.Fields("tekst");

%>
<script language="VBScript" RunAt="Server">
arrTXT = Split(strTxt, " ")
           
For i = 0 To UBound(arrTxt)
  If Len(arrTxt(i)) > 5 Then
    strErr = "Beskeden er for lang!"
Else
strTxt = strTxt & " " & arr(i)
End If
Next

If strErr <> "" Then
  strTxt = strErr
End If

</script>

Jeg blev nødt til at slette det ene next, fordi browseren sagde at den var unexpected og ikke ville køre scriptet hvis den var der. Ved ikke om det har noget med det at gøre.
Men som du kan se på siden nu sker der ikke noget!
Jeg har i øvrigt kun taget starten af min while løkke med og længere nede skriver jeg "strTxt" ud som jeg plejer, og den skriver den jo også ud kan man se!

???
Avatar billede eagleeye Praktikant
28. maj 2003 - 18:07 #13
Jeg kan måske hjlæpe med at lave det, hvis du svare på disse sprøgesmål:

Vil du havde hjælp til noget kode i javascript?

Hvad skal der ske hvis et ord er forlang?
1: indsæt - og return?
2: fjerne ordet
3: fjerne hele beskeden
4: noget helt andet
Avatar billede bombur Nybegynder
28. maj 2003 - 19:06 #14
Det skal kodes i ASP med javascript ja :)
Hvis et ord er for langt skal den automatisk dele det op i 2 eller flere dele... det er ligemeget hvor ordene bliver delt. Det er kun for at sikre designet hvis en nød skulle begynde at skrive nogle lange ord.

Hvis du også vil sige mig hvordan jeg generelt tæller hvor mange anslag der er i en tekststreng ville jeg være glad, for jeg skal på en eller anden måde sikre at der kun bliver indtastet 100 anslag i alt! Det er så mest fordi folk jo ikke skal skrive hele deres livshistorie, lissom jeg har gang i her.

/Rune
Avatar billede eagleeye Praktikant
28. maj 2003 - 20:09 #15
Du kan finde længden på det som er indtastet eller på en streng sådan her:

str = "Hej med dig max ordlængde eer 15678901234556A test.";
if (str.length<=100) {
Avatar billede eagleeye Praktikant
28. maj 2003 - 20:11 #16
Her er et eks på koden:




var str, totalantal, antalOrd, arr, i;
str = "Hej med dig max ordlængde eer 12345678901234567890 test.";

totalantal = str.length;
MAX_KARAKTER = 10
nyStr =  "";
if (totalantal<=100) {
  arr = str.split(" ");
  antalOrd = arr.length;
  for (i=0; i<antalOrd;i++)  {
    ord = arr[i];
    if (ord.length > MAX_KARAKTER){
      nyOrd = ""
      while (ord.length > MAX_KARAKTER) {
        if (!nyOrd == "") {
          nyOrd = nyOrd + "- ";
        }
        nyOrd = nyOrd + ord.substr(0,MAX_KARAKTER);
        ord = ord.substr(MAX_KARAKTER);
      }
      if (ord.length > 0) {
        nyOrd = nyOrd + "- " + ord;
      }
      nyStr = nyStr + " " + nyOrd;
    } else {
      nyStr = nyStr + " " + arr[i];
    }
  }
} //end if

Response.Write (nyStr);
Avatar billede bombur Nybegynder
28. maj 2003 - 20:57 #17
Jeg forstår ikke rigtigt. Det virker fint når jeg bare bruger det kode du har lagt her. Men lige så snart jeg bytter din
str = "Hej med dig max ordlængde eer 12345678901234567890 test.";
ud med
str = tagRS.Fields("tekst");
Som er sådan jeg fangede min tekststreng før, kommer der ikke noget ud af det!? Jeg har puttet din kode på siden og som man kan se skriver den ikke noget som helst ud!
Avatar billede bombur Nybegynder
28. maj 2003 - 20:58 #18
Min kode ser i øvrigt sådan ud nu:
var str, totalantal, antalOrd, arr, i;
str = tagRS.Fields("tekst");

totalantal = str.length;
MAX_KARAKTER = 10
nyStr =  "";
if (totalantal<=100) {
  arr = str.split(" ");
  antalOrd = arr.length;
  for (i=0; i<antalOrd;i++)  {
    ord = arr[i];
    if (ord.length > MAX_KARAKTER){
      nyOrd = ""
      while (ord.length > MAX_KARAKTER) {
        if (!nyOrd == "") {
          nyOrd = nyOrd + "- ";
        }
        nyOrd = nyOrd + ord.substr(0,MAX_KARAKTER);
        ord = ord.substr(MAX_KARAKTER);
      }
      if (ord.length > 0) {
        nyOrd = nyOrd + "- " + ord;
      }
      nyStr = nyStr + " " + nyOrd;
    } else {
      nyStr = nyStr + " " + arr[i];
    }
  }
} //end if
Avatar billede eagleeye Praktikant
28. maj 2003 - 20:58 #19
Prøv at rette denne linje, så der er .value med :

str = tagRS.Fields("tekst");

Til:

str = tagRS.Fields("tekst").value;
Avatar billede bombur Nybegynder
28. maj 2003 - 21:02 #20
Sådan... nu virker det
str = tagRS.Fields("tekst").Value;

Selvfølgelig
Avatar billede bombur Nybegynder
28. maj 2003 - 21:03 #21
Nåh... ja ok... jeg fandt faktisk ud af det før jeg så du havde skrevet det her... men nu er der points til dig!

Mange tak for hjælpen! :)
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