/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Baglæns tæller eller begrænser i <textarea~
Fra : Marco


Dato : 01-04-03 11:52

Jeg efterlyser et JavaScript som enten sætter en begrænsning af tegn i
<textarea> (som "maxlength" i <input>) eller endnu bedre;
Kan tælle baglæns fra en vis sum til nul, når folk skriver deri.

--
Hilsen Marco

www.MecoWeb.dk
www.Marco.MecoWeb.dk



 
 
fiduusen.dk (01-04-2003)
Kommentar
Fra : fiduusen.dk


Dato : 01-04-03 12:32

<script language="JavaScript"><!---
function checklaengde() {
if (document.all) {
document.all.lengthJoke.innerHTML = '';
document.all.lengthAnswer.innerHTML = '';
if (document.all.Joke.value.length != 0)
{ document.all.lengthJoke.innerHTML = ' (' +
document.all.Joke.value.length + ' tegn)'; }
if (document.all.Answer.value.length != 0)
{ document.all.lengthAnswer.innerHTML = ' (' +
document.all.Answer.value.length + ' tegn)'; }
}
}
//--></script>
</head>
<body onLoad="window_onload();CheckOnTop();">
..
..
<tr><td class="tablehaeder" colspan="3">Spørgsmål <span
ID="lengthJoke"></span></td></tr>
<tr><td class="fritekst" colspan="3"><textarea class="input"
name="Joke" id="Joke" rows="12" cols="100" onchange="checklaengde();"
onkeyup="checklaengde();"><%=strJoke%></textarea></td></tr>
<tr><td class="tablehaeder" colspan="3">Svar <span
ID="lengthAnswer"></span></td></tr>
<tr><td class="fritekst" colspan="3"><textarea class="input"
name="Answer" id="Answer" rows="6" cols="100" onchange="checklaengde();"
onkeyup="checklaengde();"><%=strAnswer%></textarea></td></tr>

eksempel fra: http://ww.wfiduusen.dk/joke/noteedit.asp


Hilsen
Bjarne D.
www.fiduusen.dk



Marco (01-04-2003)
Kommentar
Fra : Marco


Dato : 01-04-03 13:41


"fiduusen.dk" <no@mail.please> skrev:
> eksempel fra: http://ww.wfiduusen.dk/joke/noteedit.asp
>
Jeg kan desværre ikke se dit eksempel.
Prøver først, om jeg kan få J.G.C´s forslag til at virke.

--
Hilsen Marco

www.MecoWeb.dk
www.Marco.MecoWeb.dk


fiduusen.dk (01-04-2003)
Kommentar
Fra : fiduusen.dk


Dato : 01-04-03 15:36

nope - det rigtige link er http://www.fiduusen.dk/joke/noteedit.asp

(punktumet var lige hoppet en position til venstre)

hilsen, www.fiduusen.dk



Marco (01-04-2003)
Kommentar
Fra : Marco


Dato : 01-04-03 16:22

"fiduusen.dk" <no@mail.please> skrev:

> nope - det rigtige link er http://www.fiduusen.dk/joke/noteedit.asp
>
Ja, nu virker linket :)
Har prøvet dit script, men der kommer en eller anden fejlmelding til at
begynde med.
Ellers virker det iøvrigt rigtig fint.

--
Hilsen Marco

www.MecoWeb.dk
www.Marco.MecoWeb.dk


Jens Gyldenkærne Cla~ (01-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-04-03 12:35

Marco skrev:

> Jeg efterlyser et JavaScript som enten sætter en begrænsning
> af tegn i <textarea> (som "maxlength" i <input>) eller endnu
> bedre; Kan tælle baglæns fra en vis sum til nul, når folk
> skriver deri.

Jeg fandt lige følgende fra en gammel side:
Scriptet opdaterer en tæller med antal ledige tegn. Negative tal
vises med rødt. Man kan godt lave en udgave hvor man slet ikke
kan skrive mere når man når maksgrænsen, men jeg kan bedre lide
ideen om at vise hvor mange tegn der er for meget - på den måde
kan man lettere tilpasse en tekst.

<%= maxlen %> udskriver en asp-konstant til javascriptet - det
kan bare erstattes af en javascriptkonstant. I mit tilfælde skulle
jeg holde længde af et input-felt + et textarea under en bestemt
længde - men du kan nemt tilpasse det så det kun virker på dit
textarea.

Det er ikke særlig "pæn" javascript-kodning - i stedet for
document.val_part bør man nok bruge document.getElementByID("val_part")
- men det er der sikkert folk her i gruppen der kan hjælpe med.


<script language="JavaScript" type="text/javascript">
<!--
function opdaterFrie(){
// Beregn antal frie tegn og vis det.
overskrift = document.val_part.overskrift.value.length;
tekst = document.val_part.tekst.value.length;
ltekst = document.val_part.linktekst.value.length;
laengde = <%= maxlen %> - (overskrift) - (tekst) - (ltekst);
      if (laengde < 0) {
         document.val_part.frieTegn.style.backgroundColor = "Red";
      } else
      {
         document.val_part.frieTegn.style.backgroundColor = "Lime";
      }
document.val_part.frieTegn.value = laengde;
}
//-->
</script>

På det textarea der skal kontrolleres er der sat følgende events:

onFocus="opdaterFrie()" onBlur="opdaterFrie()" onKeyUp="opdaterFrie()"
onKeyDown="opdaterFrie()"

Igen - det kan sikkert gøres pænere - men ovenstående virker i hvert
fald i IE.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er nødvendigt
for at forstå dit svar i sammenhængen.
Se hvorfor og hvordan på http://usenet.dk/netikette/citatteknik.html

Marco (01-04-2003)
Kommentar
Fra : Marco


Dato : 01-04-03 13:39


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev:

> Scriptet opdaterer en tæller med antal ledige tegn. Negative tal
> vises med rødt.
>
> <%= maxlen %> udskriver en asp-konstant til javascriptet - det
> kan bare erstattes af en javascriptkonstant. I mit tilfælde skulle
> jeg holde længde af et input-felt + et textarea under en bestemt
> længde - men du kan nemt tilpasse det så det kun virker på dit
> textarea.
>
Ok, nu er jeg kommet så langt. Jeg er ikke en ørn til JS, så jeg søger om
videre hjælp.
Har jeg sat scriptet korrekt ind og præcist hvor og hvordan skal jeg sætte
min begrænsning ind til textarea ?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=ISO-8859-1">

<script language="JavaScript" type="text/javascript">
<!--
function opdaterFrie(){
// Beregn antal frie tegn og vis det.
overskrift = document.val_part.overskrift.value.length;
tekst = document.val_part.tekst.value.length;
ltekst = document.val_part.linktekst.value.length;
laengde = <%= maxlen %> - (overskrift) - (tekst) - (ltekst);
if (laengde < 0) {
document.val_part.frieTegn.style.backgroundColor = "Red";
} else
{
document.val_part.frieTegn.style.backgroundColor = "Lime";
}
document.val_part.frieTegn.value = laengde;
}
//-->
</script>
</head>
<body>
<FORM METHOD="POST" ACTION="/cgi-bin/formmail/FormMail.pl">
<table cellspacing="0" cellpadding="0">
<tr>
<td width="80" valign="top">Besked:</td>
<td><textarea name="besked" cols="49" rows="4" onFocus="opdaterFrie()"
onBlur="opdaterFrie()" onKeyUp="opdaterFrie()"
onKeyDown="opdaterFrie()"></textarea></td>
</tr>
<tr>
<td width="80"></td>
<td><br><input type="submit" value="Send">
<input type="reset" value="Nulstil">
</td></tr></table>
</form>
</body></html>


Jens Gyldenkærne Cla~ (01-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-04-03 13:56

Marco skrev:

> Har jeg sat scriptet korrekt ind

Det er placeret i head - og det er helt korrekt - men du skal
tilpasse det til dine egne forhold.

Først og fremmest skal du give din form et navn og et id (name-
parameteren er egentlig udfaset med det giver så vidt jeg husker
problemer at undvære den.

Indsæt derfor id="minform" name="minform" (udskift evt. "minform"
med et mere passende navn) i form-koden (<form id="..." name="..."
method="..."...>). Hvis du skal have en tæller på skal du også have
et formelement til tælleren.

Her er den tæller jeg har brugt til scriptet:
<input type="text" name="frieTegn" id="frieTegn" value="<%= maxLen
%>" size="3" maxlength="3" readonly class="formbox">

<%= maxlen %> er som før udskrevet fra asp - erstat det med den
makslængde du vil tillade.


Herefter skal du tilrette javascriptet.

> overskrift =
> document.val_part.overskrift.value.length;


Overskrift skal du slet ikke bruge - slet den

> tekst = document.val_part.tekst.value.length;

Den her skal tilrettes. Val_part er navnet på min form - udskift
med navnet på din egen form. tekst (på højre side af lighedstegnet)
er navnet på mit textarea - udskift med navnet på dit eget
textarea.


> ltekst = document.val_part.linktekst.value.length;

Slettes.


> laengde = <%= maxlen %> - (overskrift) - (tekst) - (ltekst);

Maxlen har jeg defineret i asp. Du kan lave en tilsvarende
deklaration i javascript:

   var maxlen = 200;

Antallet af frie tegn kan så beregnes som

   laengde = maxlen - tekst;


> if (laengde < 0) {
> document.val_part.frieTegn.style.backgroundColor = "Red";


Som før skal val_part erstattes med navnet på din form.
Gælder også de følgende steder der står val_part.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Marco (01-04-2003)
Kommentar
Fra : Marco


Dato : 01-04-03 14:39


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev:

> Det er placeret i head - og det er helt korrekt - men du skal
> tilpasse det til dine egne forhold.
>
Jeg tror vist, jeg har kludret i det, selv med din fine punkt for
punkt-beskrivelse.
Så med håb på din tålmodighed, vil jeg bede dig om at se på scriptet én gang
til.
Jeg har sat tælleren i en form for sig og omdøbt Val_part til formular.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=ISO-8859-1">

<script language="JavaScript" type="text/javascript">
<!--
function opdaterFrie(){
// Beregn antal frie tegn og vis det.
tekst = document.formular.tekst.value.length;
laengde = <var maxlen=20> - (maxlen) - (tekst);
if (laengde < 0) {
document.formular.frieTegn.style.backgroundColor = "Red";
} else
{
document.formular.frieTegn.style.backgroundColor = "Lime";
}
document.formular.frieTegn.value = laengde;
}
//-->
</script>

</head><body>

<FORM id="frietegn" name="frietegn" METHOD="POST"
ACTION="/cgi-bin/formmail/FormMail.pl">
<input type="text" name="frieTegn" id="frieTegn" value="<var maxlen=20>"
size="3" maxlength="3" readonly>
</form>
<br>
<FORM id="formular" name="formular" METHOD="POST"
ACTION="/cgi-bin/formmail/FormMail.pl">
<textarea name="besked" cols="49" rows="4" onFocus="opdaterFrie()"
onBlur="opdaterFrie()" onKeyUp="opdaterFrie()"
onKeyDown="opdaterFrie()"></textarea>
<br>
<input type="submit" value="Send">
<input type="reset" value="Nulstil">
</form>

</body></html>


Jens Gyldenkærne Cla~ (01-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-04-03 14:51

Marco skrev:

> Jeg tror vist, jeg har kludret i det, selv med din fine punkt
> for punkt-beskrivelse.
> Så med håb på din tålmodighed, vil jeg bede dig om at se på
> scriptet én gang til.

Har du et link til siden - det er lettere at overskue der.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Marco (01-04-2003)
Kommentar
Fra : Marco


Dato : 01-04-03 14:55

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev :
> Har du et link til siden - det er lettere at overskue der.
> --
Har oploaded siden på http://kolonihaveportal.dk/formular.htm

--
Hilsen Marco

www.MecoWeb.dk
www.Marco.MecoWeb.dk


Jens Gyldenkærne Cla~ (02-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 02-04-03 09:48

Marco skrev:

> Har oploaded siden på http://kolonihaveportal.dk/formular.htm

O.k. - jeg kan anbefale at validere siden. Gå ind på
http://validator.w3.org/ og indtast din adresse (incl. http://).

Pt får du tre fejl:

Den første er fordi du mangler en titel på siden (det har ikke
noget med javascriptfejlen at gøre, men bør rettes alligevel.

Nr. 2 og 3 er til gengæld relevante her - du har brugt id-værdien
"frietegn" to gange - både til dit form-element og til din
indputboks. Formen skal hedde "formular" hvis det skal passe til
det du har skrevet i javascriptet.

Der er desuden et par fejl som validatoren ikke kan se. Dit
tekstelement hedder "besked" men i javascriptet refererer du til
det med navnet "tekst". Og besked står kun som name="besked" - sæt
en id="besked" på også. Endelig skriver du

   value="<var maxlen=20>"
- i din tællerboks. Det giver ikke mening. Value skal bare være et
tal - hvis makslængden skal være 20 så skriver du value="20".
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Marco (02-04-2003)
Kommentar
Fra : Marco


Dato : 02-04-03 10:16

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev :

> Nr. 2 og 3 er til gengæld relevante her ...

taeller til taeller og frietegn til frietegn samt
formular til formular og tekst til tekst.

Nu validerer siden, og jeg har sat <title> på, selvom jeg fandt det
unødvendigt før :)

Jeg har lyst til at spørge dig, om du kunne vise mig det korrekte script, da
jeg ikke kan få det til at virke endnu grundet min totale uforståelse.

--
Hilsen Marco

www.Kolonihaveportal.dk




Jens Gyldenkærne Cla~ (02-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 02-04-03 10:24

Marco skrev:

> taeller til taeller og frietegn til frietegn samt
> formular til formular og tekst til tekst.

Øh - ikke forstået.

> Nu validerer siden, og jeg har sat <title> på, selvom jeg
> fandt det unødvendigt før :)

Enhver side skal have en titel.


> Jeg har lyst til at spørge dig, om du kunne vise mig det
> korrekte script, da jeg ikke kan få det til at virke endnu
> grundet min totale uforståelse.

Så vil jeg foreslå dig at læse et hæfte om javascript. Jeg vil ikke
lave et færdigt script til dig.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Marco (02-04-2003)
Kommentar
Fra : Marco


Dato : 02-04-03 10:44

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev:
> Marco skrev:
>
> > taeller til taeller og frietegn til frietegn samt
> > formular til formular og tekst til tekst.
>
> Øh - ikke forstået.
>
Måske bare min måde, at forklare på.
Syntes jeg har gjort, hvad du indtil videre har skrevet, men det virker
stadig ikke :(

> Enhver side skal have en titel.
>
Også en midlertidig side i testregi ?
For overskuelighedens skyld har jeg ikke lagt scriptet ind på den "rigtige"
side endnu - nå, lad nu det ligge.

> Så vil jeg foreslå dig at læse et hæfte om javascript. Jeg vil ikke
> lave et færdigt script til dig.

Jeg tænkte, jeg da kunne se sammenhængen, men i såfald håber jeg på din
tålmodighed.
Sitet validerer, men jeg kan som sagt stadig ikke få det til at virke - vil
du fortsat hjælpe ?

Hilsen Marco


Jens Gyldenkærne Cla~ (02-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 02-04-03 11:02

Marco skrev:

> Sitet validerer, men jeg kan som sagt stadig ikke få det til
> at virke - vil du fortsat hjælpe ?

O.k. - jeg kan se at du har fået rettet lidt mere siden sidst. Du
er tæt på nu.

Linjen:

   laengde = <var maxlen=120> - (maxlen) - (tekst);

- er forkert. <var maxlen=120> giver ikke mening i javascript. Det
linjen skal foretage er at beregne forskellen mellem din definerede
makslængde og tekstlængden (som du har liggende i "tekst".

Du kan enten skrive:

   laengde = 120 - tekst;

(og så selv huske at 120 er din makslængde).

Eller også skrive

   var maxlen = 120;
   laengde = maxlen - tekst;
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Marco (02-04-2003)
Kommentar
Fra : Marco


Dato : 02-04-03 11:19

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev:

> Du kan enten skrive:
> laengde = 120 - tekst;
> (og så selv huske at 120 er din makslængde).
> Eller også skrive
> var maxlen = 120;
> laengde = maxlen - tekst;

Jeg syntes ikke at kunne se nogen forskel. Hvad mener du med selv at huske
makslængden ?
Den står jo både på siden og i scriptet.

Men det virker nu, og du skal have 1000 tak :)

Hilsen Marco.


Jens Gyldenkærne Cla~ (02-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 02-04-03 12:04

Marco skrev:

>> laengde = 120 - tekst;

Én linje - og ingen identifikation af hvad tallet 120 betyder.

>> var maxlen = 120;
>> laengde = maxlen - tekst;

To linjer - tallet 120 kvalificeres ved at lægge det i en variabel
med et beskrivende navn.

> Jeg syntes ikke at kunne se nogen forskel.

Der er ingen forskel i virkemåden - de to metoder virker lige godt.
Der er til gengæld en forskel i hvor let scriptet er at læse. Hvis
du blot skriver "120 - tekst" er det ikke umiddelbart til at se
hvad tallet 120 betyder.

> Men det virker nu, og du skal have 1000 tak :)

Velbekomme.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Marco (02-04-2003)
Kommentar
Fra : Marco


Dato : 02-04-03 12:17


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev:
> Marco skrev:

> > Men det virker nu, og du skal have 1000 tak :)
>
> Velbekomme.

Hvis du er interesseret, kan scriptet nu ses i sin helhed på
http://kolonihaveportal.dk/kontaktsalg.shtml

.... Og endnu engang tak :)

Hilsen Marco


johnny rasmussen (06-04-2003)
Kommentar
Fra : johnny rasmussen


Dato : 06-04-03 15:10

Det virker også hos mig men jeg har et spørgsmål.
Kan man lave det så istedet for at det skifter bagrundsfarve
laver et popup ??

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (07-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-04-03 08:50

johnny rasmussen skrev:

> Det virker også hos mig

Hvad virker også hos dig? Jeg ser kun nye indlæg, så citer
venligst lidt af teksten hvis du vil have min hjælp (se min
signatur for en vejledning).

> Kan man lave det så istedet for at det skifter bagrundsfarve
> laver et popup ??

Ja.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste