Avatar billede lukasolsen Nybegynder
21. marts 2005 - 16:24 Der er 15 kommentarer og
1 løsning

Opdatering af form felt.

Hej eksperter,

Hvordan definerer jeg hvor meget tekst jeg max, vil have i et textarea. Med et textfield bruger jeg bare " maxlength="" " men den virker ikke på textareas.

Udover det vil jeg gerne vide hvordan man kan gøre således`?

-----------------------
textarea
-----------------------
Din besked må maksimalt være på 700 tegn - du har "antaltegn" tilbage.


Altså hvordan får man den hele tiden til at opdaterer hvergang man skriver eller sletter i bogstav?


På forhånd tak!
Avatar billede skyggen2000 Nybegynder
21. marts 2005 - 19:26 #1
Har lavet et eksempel her.

<html>
<body>       
    <textarea id="hejsa" onkeyup="validateTextarea(this);" cols="39" rows="5" class="textbox">test tekst</textarea>
</body>
<script>

function validateTextarea(objField, maxSize)
{
       
        //hvis ikke der er en specifik max størrelse på teksboksen, bliver den automatisk sat til 700 tegn.
        if(maxSize == undefined)
            maxSize = 700   

        if(objField.value.length > maxSize)
        {   
            alert('Der må maksimalt være ' + maxSize + ' tegn i denne teksboks!');
            objField.focus();
            objField.select();
           
            if(event)
            {
                event.keyCode = 0;
                event.cancelBubble = true;
                event.returnValue = false;
            }
           
            return(false);
        }
        else
        {           
            //denne værdi kan du skrive ud hvor du har lyst, dette er et eksempel
            alert('Du har benyttet:' + objField.value.length + ' ud af maksimalt ' + maxSize + ' tegn i denne teksboks!');
            return(true);
        }
}       
   
</script>
</html>
Avatar billede lukasolsen Nybegynder
21. marts 2005 - 19:33 #2
Nu har jeg gjordt sådan her:

<textarea name="body" onkeyup="validateTextarea(this);" cols="86" class="textareas" id="body"></textarea>
    <br>
    <%
   
    function validateTextarea(objField, maxSize)
{
     
        //hvis ikke der er en specifik max størrelse på teksboksen, bliver den automatisk sat til 700 tegn.
        if(maxSize == undefined)
            maxSize = 700 

        if(objField.value.length > maxSize)
        { 
            alert('Der må maksimalt være ' + maxSize + ' tegn i denne teksboks!');
            objField.focus();
            objField.select();
         
            if(event)
            {
                event.keyCode = 0;
                event.cancelBubble = true;
                event.returnValue = false;
            }
         
            return(false);
        }
        else
        {         
            //denne værdi kan du skrive ud hvor du har lyst, dette er et eksempel
            alert('Du har benyttet:' + objField.value.length + ' ud af maksimalt ' + maxSize + ' tegn i denne teksboks!');
            return(true);
        }
}
    %>





Men så får jeg denne fejl:
http://www.team-nopanic.dk/communications_version_1/default.asp?mode=addmessage
Avatar billede skyggen2000 Nybegynder
21. marts 2005 - 19:57 #3
hvorfor har du kørt det ind i <%%>. Det er ikke asp, og kan derfor ikke kompilere.

Eksemplet skal kopieres over i en html side.
Avatar billede lukasolsen Nybegynder
21. marts 2005 - 20:02 #4
Avatar billede lukasolsen Nybegynder
21. marts 2005 - 20:23 #5
Har fundet løsningen :)
Avatar billede lukasolsen Nybegynder
21. marts 2005 - 20:26 #6
//denne værdi kan du skrive ud hvor du har lyst, dette er et eksempel
            alert('Du har benyttet:' + objField.value.length + ' ud af maksimalt ' + maxSize + ' tegn i denne teksboks!');
            return(true);

Men hvad gør jeg så her, hvis ikke jeg vil have den udskrevet i en alertbox
Avatar billede roenving Novice
22. marts 2005 - 01:16 #7
>>skyggen

Hvor dælen har du lært at bruge script-tags uden type, ja endda uden den dybt forældede language-attribut, som flere ret nye editorer automatisk indsætter ...

-- det er ikke tilladt i html siden slutningen af 1996 ,-(

-- og den simple udgave, som bare har den ekstra fremvisning med (og er et rigtigt html-dokument !-)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>

<title>Tomt dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript" type="text/javascript">
function validateTextarea(objField, maxSize){
  //hvis ikke der er en specifik max størrelse på teksboksen, bliver den automatisk sat til 700 tegn.
  if(!maxSize)
    maxSize = 700;
  if(objField.value.length > maxSize){
    objField.style.color = 'red';
  }else{
    objField.style.color = 'green';
  }
  document.getElementById('minSpan').innerHTML = maxSize - objField.value.length;
}       

</script>
</head>
<body>
    Du har nu <span id="minSpan" style="color:green;font-weight:900;">25</span>&nbsp;tegn tilbage i textarea !-)<br>
    Textarea:<br><textarea id="hejsa" onkeyup="validateTextarea(this,25);" cols="39" rows="5" class="textbox"></textarea>
</body>

</html>
Avatar billede lukasolsen Nybegynder
22. marts 2005 - 08:41 #8
Okay, men hvis jeg benyter mig at dit seneste script, så stopper den ikke når der ikke kan være mere i feltet. Så fortsætter den bare og skriver istedet -

Kan du lave et script som præcis gør det samme som dette her?
http://www.teammatrix.dk/?page=6&mode=add
Avatar billede skyggen2000 Nybegynder
22. marts 2005 - 09:13 #9
Eftersom det var et eksempel og ikke kode der direkte skulle implementeres, mente jeg ikke det var nødvendigt at skrive language="javascript" osv.
Avatar billede roenving Novice
22. marts 2005 - 09:53 #10
Nåh, det er bare en skidt vane, så ...

-- så skal du erstatte eller tilføje der, hvor den sætter teksten til at være rød:

    objField.style.color = 'red';
    objField.value = objField.value.substring(0,maxSize);
Avatar billede lukasolsen Nybegynder
22. marts 2005 - 10:01 #11
Okay, det kan jeg altså ikke få til at virke. Prøv lige at lave den, så den er præcis ligesom http://www.teammatrix.dk/?page=6&mode=add


<script language="javascript" type="text/javascript">
function validateTextarea(objField, maxSize){
  //hvis ikke der er en specifik max størrelse på teksboksen, bliver den automatisk sat til 700 tegn.
  if(!maxSize)
    maxSize = ;
  if(objField.value.length > maxSize){
    objField.style.color = 'red';
  }else{
    objField.style.color = 'green';
  }
  document.getElementById('minSpan').innerHTML = maxSize - objField.value.length;
}     

</script>
    <textarea name="body" onkeyup="validateTextarea(this,25);" cols="86" class="textareas" id="body"></textarea>
    <br> Du har nu <span id="minSpan" style="color:green;font-weight:900;">25</span>&nbsp;tegn tilbage i textarea !-)
Avatar billede skyggen2000 Nybegynder
22. marts 2005 - 10:02 #12
Dovenskab:) Allright, i disse omgivelser er det nok bedst at tilføje det altid således at der ikke er andre der også bliver "Dovne" på bag grund af dette.
Avatar billede lukasolsen Nybegynder
22. marts 2005 - 10:09 #13
Ved godt at det er hjælp til selvhjælp. Men har ikke meget erfaring inden for programmering. Er pt. igang med at lave min første tagwall, så fatter ikke en pind af javascript
Avatar billede lukasolsen Nybegynder
22. marts 2005 - 10:54 #14
Har heller ikke rigtigt fået svar på hvordan man sætter en maxlengt på textareas. Altså hvordan man får den til at stoppe med f.eks. 50 tegn
Avatar billede lukasolsen Nybegynder
22. marts 2005 - 10:59 #15
Har fundet ud af det :)

<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 = mainForm._ctl11_tbbody;
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>



<textarea name="_ctl11:tbbody" id="_ctl11_tbbody" onchange="storeCaret(this);countLetters(this);" onkeyup="storeCaret(this);countLetters(this);" onkeydown="storeCaret(this);countLetters(this);" onclick="storeCaret(this);" onselect="storeCaret(this);" style="width:550px;height:200px;"></textarea><div id='letterdiv' style='font-size:9px;' class='form_note'>Din besked må maksimalt være på 700 tegn - du har <span id='lettercount'>700</span> tegn tilbage.</div>
Avatar billede lukasolsen Nybegynder
22. marts 2005 - 10:59 #16
Tak for hjælpne :)
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