Avatar billede diz Nybegynder
21. marts 2004 - 17:19 Der er 8 kommentarer og
2 løsninger

tjekke om alle ord i en streng er mindre end x

Hejsa,

Jeg skal bruge noget kode som kan tjekke om alle ordene i en streng er mindre end x antal karakterer og om hele strengen er mindre end y antal karakterer.

den sidste del kan man vel klare med :

if (streng.length > y) {
  alert('strengen er for lang');
}

Men den første del skal jeg bruge noget hjælp til. Håber der er nogen der kan hjælpe.

/Sune
Avatar billede roenving Novice
21. marts 2004 - 17:29 #1
<script type="text/javascript">
function ordLaengde(txt,x,y){
  var tmp = txt.replace(/[\s\,\.\;\:\-]/g," ");
  tmp = tmp.split(" ");
  for(i=0;tmp.length>i;i++){
    if(tmp[i].length>x){
      alert("For lange ord i teksten");
      return false;
    }
  }
  if(txt.length>y){
    alert("For lange ord i teksten");
    return false;
  }
  return true;
}
</script>

-- aldeles utestet, men ideen er sikker nok !-)
Avatar billede diz Nybegynder
21. marts 2004 - 20:06 #2
herligt det virker fint nok.

Nu er det bare sådan at jeg faktisk hellere vil gribe det an på en lidt anden måde.

Det skal bruges til at ligge tekst på et billede. Teksten må fylde maks 2 linjer af 15 tegn. Ordene må ikke "knækkes" og flere linjer, så man kan ikke altid regne med at ovenstående script regner rigtigt.

Så derfor var det at jeg tænkte på at smide en tekstbox på siden, med 2 linjer af 15 tegn. På den måde kan brugeren se præcis hvordan teksten kommer til at stå med linjeskift osv.

Den skulle gerne være uden scrollbars osv. Er det noget du kan hjælpe med?

/Sune
Avatar billede roenving Novice
21. marts 2004 - 20:23 #3
Ovenstående kigger efter alle tegn, som afgrænser ord, så forkert tæller den ikke, men jeg skal lige have øverste etage til at rotere, for at lave den langsomt lyder svært !-)

Sekund og/eller time !o]
Avatar billede roenving Novice
22. marts 2004 - 00:23 #4
Måske sådan:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Vis billedtekst</title>
<meta name="keywords" content="søgeord adskilt af komma">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">

</style>
<script language="javascript" type="text/javascript">
function checkTxt(fld){
  var txt = fld.value,l=txt.length,d = document.getElementById('minDiv'),works=false;
  for(i=0;30-l>=i;i++)works=works||/^[\- ]$/.test(txt.charAt(15-i));
  if(30>=l&&works){
    d.innerHTML = txt;
    d.style.color = 'lightgreen';
  }else{
    d.innerHTML = "Teksten er ugyldig som billedtekst ...";
    d.style.color = 'red';
    fld.value = fld.defaultValue;
  }
}
</script>
</head>
<body>
<form id="minForm" name="minForm">
Skriv din billed-tekst (Max. 30 tegn i to linjer !-)<br>
<textarea id="mitTextarea" name="mitTextarea" onchange="checkTxt(this);" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" cols="15" rows="2" style="overflow:hidden;">Skriv billed-tekst her</textarea>
</form>
<div id="minDiv" style="width:135px;height:42px;font-family:courier">Eksempel-tekst</div>
</body>
</html>
Avatar billede diz Nybegynder
22. marts 2004 - 08:17 #5
hmmm,

Jeg havde mere tænkt mig at man simpelthen bare ikke kunne skrive mere end 2 linjer i tekstboksen. Så den skulle tjekke om man var nået til linje 3 og hvis man var det kunne man ikke skrive mere... Det ville nok være den bedste løsning

/Sune
Avatar billede diz Nybegynder
22. marts 2004 - 10:19 #6
hepper..

Jeg fandt en løsning :

<html>
<head>
<title>TextArea</title>
<script language="javascript">
function controlTextAreaInput(textarea, maxlength, maxLines)
{

var mainString = textarea.value;
var len = mainString.length;
var aLines = mainString.split("\n");
var numberOfLines = aLines.length;

var indexOfCurrentLine = eval(parseInt(aLines.length)-1);
var string = aLines[indexOfCurrentLine];
var lastCharacter = string.charAt(eval(len-1));
var previousLines = "";

if (numberOfLines > maxLines){
    indexOfCurrentLine = maxLines;
}

for(var i=0;i<indexOfCurrentLine;i++){
    previousLines +=aLines[i];
}
var keyCode = document.layers ? event.which : event.keyCode;
if (keyCode==13){
    if (aLines.length >= eval(maxLines+1)){
          textarea.value = mainString.substr(0, eval(len-2));
          textarea.value = previousLines.substring(0,eval(previousLines.length-1));
    }
    else {
          return true;
    }
}
if (string.length > maxlength - 1)
    textarea.value = previousLines +string.substr(0, maxlength);
return;
}
</script>
</head>
<body>
<form name="myform">
<textarea name="mytextarea1" cols="15" rows="2" onkeyup="java script:controlTextAreaInput(mytextarea1,15,2);" style="overflow:hidden;"></textarea><br>
</form>
</body>
</html>

Men smid et svar, så deler vi points, da du hjalp mig godt på vej...

/Sune
Avatar billede diz Nybegynder
22. marts 2004 - 10:38 #7
nu mangler jeg bare at man kan fjerne linebreaks fra teksten når den submittes...

kan du hjælpe jher?

/Sune
Avatar billede diz Nybegynder
22. marts 2004 - 12:06 #8
bare glem det sidste...

jeg fandt selv en løsning..

så bare smid et svar
Avatar billede roenving Novice
22. marts 2004 - 15:25 #9
Velbekomme '-)
Avatar billede roenving Novice
22. marts 2004 - 19:15 #10
-- 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