Avatar billede nemlig Professor
08. august 2008 - 13:33 Der er 11 kommentarer og
1 løsning

Input og maxlength i textarea

Er det ikke muligt at begrænse max. antal tegn i et textarea?
Jeg har anvendt maxlength, men det virker åbenbart ikke i textarea. Er der en anden løsning?
Avatar billede ssv Nybegynder
08. august 2008 - 13:42 #1
Dette javascript kan gøre tricket:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Titel</title>
<script language="javascript" type="text/javascript">
function imposeMaxLength(Object, MaxLen)
{ return (Object.value.length <= MaxLen); }
</script>
</head>

<body>
<form>
<textarea onkeypress="return imposeMaxLength(this, 30);" ></textarea>
</form>
</body>
</html>

--

This, 30 <-- Indstil max antal tegn
Avatar billede ssv Nybegynder
08. august 2008 - 13:45 #2
> Men det skal så lige siges at jeg har brugt eksemplet fra http://psacake.com/web/js.asp, og at der sikkert er nogle kloge hoveder her der kan gøre det bedre ;-)
Avatar billede ssv Nybegynder
08. august 2008 - 13:46 #3
Generelt er der mange løsninger til dit spørgsmål. Google er din ven: http://www.google.dk/search?q=max-length+in+textarea :-)
Avatar billede ssv Nybegynder
08. august 2008 - 14:01 #4
Først, undskyld jeg spammer sådan, men jeg sad lige og arbejdede på et lille eksempel, som det jo kunne være du kunne bruge. :-)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Titel</title>
<style type="text/css">
form { margin: 0; padding: 0; }
.whatsleft { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #666; text-align: right; width: 350px; float: left; margin: 5px 0 0 0; }
.textarea { height: 40px; width: 340px; border: 1px solid #ccc; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; padding: 5px; }
</style>
</head>

<body>
<form action="" id="ditID">
<textarea class="textarea" onkeydown="if(this.value.length >= 100) { this.value = this.value.substring(0, 100); document.getElementById('counter').style.color = 'red'; this.style.border = '1px solid #ccc'; } else { document.getElementById('counter').style.color = ''; this.style.border = '1px solid #ccc'; }document.getElementById('counter').innerHTML = 100 - this.value.length.toString();"></textarea>
</form>

<div class="whatsleft"><span id="counter">100</span> tilbage</div>
</body>
</html>


(Nu stopper spam ;-))
Avatar billede nemlig Professor
08. august 2008 - 14:25 #5
Tak for din SPAM ;-))
Jeg når først at kigge på det i aften.
Avatar billede nemlig Professor
08. august 2008 - 14:55 #6
Nå - jeg nåede det alligevel.
Jeg synes, da dit første forslag er udmærket, og koden fylder heller ikke meget.
Det fungerer i hvert fald efter hensigten.
Tak for bidragene. Send venligst et svar.
Avatar billede ssv Nybegynder
08. august 2008 - 15:43 #7
> Der ser dog ud til at være en fejl i den første kode i Firefox, da man ikke kan redigere i den indtastede tekst. Eksempel 2 med counteren (http://proads.dk/simon/textarea.html) vil jeg nok anbefale, da jeg kan se den virker i IE 6.0, 7.0 og Firefox her :-)
Avatar billede ssv Nybegynder
08. august 2008 - 15:44 #8
Og du kan altid fjerne counteren, hvis du ikke vil have den :-)
Avatar billede olebole Juniormester
09. august 2008 - 16:41 #9
<ole>

Under HTML kan scriptet gøres validt ved at undgå innerHTML - men undgå helt at bruge scriptet under XHTML, hvor det ikke er muligt at hente dynamiske værdier fra formelementer.

<textarea class="textarea" onkeydown="if(this.value.length >= 100) { this.value = this.value.substring(0, 100); document.getElementById('counter').style.color = 'red'; this.style.border = '1px solid #ccc'; } else { document.getElementById('counter').style.color = ''; this.style.border = '1px solid #ccc'; }document.getElementById('counter').firstChild.nodeValue = 100 - this.value.length.toString();"></textarea>

/mvh
</bole>
Avatar billede roenving Novice
10. august 2008 - 19:56 #10
-- hvad skal toString-tingen ?-)
Avatar billede olebole Juniormester
10. august 2008 - 22:27 #11
Den skal gøre det hele lidt mere esoterisk  :D
Avatar billede olebole Juniormester
10. august 2008 - 22:28 #12
- den skal naturligvis arkiveres over højre skulder:
    ...... firstChild.nodeValue = 100 - this.value.length;  ;o)
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