Avatar billede nemlig Professor
23. februar 2010 - 10:00 Der er 7 kommentarer og
1 løsning

Script skal også virke ved onload

Hejsa.
Jeg har dette nedtællings-script, som virker i et textarea.

function limitText(limitField, limitCount, limitNum) {
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    } else {
        limitCount.value = limitNum - limitField.value.length;
    }
}

Og min html/php kode ser sådan her ud:

<textarea name='smsTekstFoer' onFocus=\"limitText(this.form.smsTekstFoer,this.form.countdown,160);\" onBlur=\"limitText(this.form.smsTekstFoer,this.form.countdown,160);\" onKeyDown=\"limitText(this.form.smsTekstFoer,this.form.countdown,160);\"
    onKeyUp=\"limitText(this.form.smsTekstFoer,this.form.countdown,160);\" cols='47' rows='4'>$row[smsTekstFoer]</textarea><br>
Du har <input readonly type='text' name='countdown' size='2' value='160'> tegn tilbage.

Hvordan hulen får jeg nedtællingen til at virke allerede ved onload?
Avatar billede tjens Nybegynder
23. februar 2010 - 18:29 #1
Det er det samme, bortset fra at du ikke kan bruge this:
limitText(document.DitFormNavn.smsTekstFoer,document.DitFormNavn.countdown,160)

For iøvrigt burde onkeyup være nok: Det er ikke nødvendigt at kalde samme rutine så mange gange
Avatar billede nemlig Professor
23. februar 2010 - 18:56 #2
Sejt....:)
Jeg er ikke 100% med.

Jeg skal altså give min form et navn, fx. sådan her:

<form action='".$_SERVER['PHP_SELF']."' method='post' name='sms'>

Og så skal jeg fjerne onFocus, onBlur, onKeyDown

Skal koden dermed se sådan her ud:

<textarea name='smsTekstFoer' onKeyUp=\"limitText(this.form.smsTekstFoer,this.form.countdown,160);\" limitText(document.sms.smsTekstFoer,document.sms.countdown,160)
cols='47' rows='4'>$row[smsTekstFoer]</textarea><br>
Du har <input readonly type='text' name='countdown' size='2' value='160'> tegn tilbage.
Avatar billede tjens Nybegynder
23. februar 2010 - 20:05 #3
Nej ikke helt: Den linie jeg skrev var til brug i din onload rutine, og skal ikke indgå i selve formen. Så den skal lige flyttes.

Du efterspurgte jo hvordan man gjorde "onload" i dig originale spørgsmål?
Avatar billede tjens Nybegynder
23. februar 2010 - 20:38 #4
Demo:
<body onLoad="document.F1.count.value=160 - document.F1.sms.value.length ;document.F1.sms.focus();document.F1.sms.select();">

<form name="F1">
<textarea name="sms" cols="70" rows="3"
    onKeyUp="document.F1.count.value=160 - this.value.length;"
>Type Message here</textarea>
<br />
Characters left:
<input type="text" name="count" value="0" size="4" readonly>
</form>

</body>
Avatar billede nemlig Professor
23. februar 2010 - 20:40 #5
OK - det er jeg med på, og har det også til at virke.
Jeg kalder denne funktion ved <body onload=....>:

function tael_ned_ved_onload() {
  limitText(document.sms.smsTekstFoer,document.sms.countdown,160)
}

Og det lader til at virke. :)

Jeg har bare den udfordring, at jeg har 2 x textarea, hvorfor jeg har lavet 2 x nedtællingsfunktioner:

Den anden hedder:
function limitText2(limitField, limitCount, limitNum) { osv.

Men det fungerer ikke korrekt, når jeg kalder begge funktioner sådan her:

function tael_ned_ved_onload() {
  limitText(document.sms.smsTekstFoer,document.sms.countdown,160)
  limitText2(document.sms.smsTekstEfter,document.sms.countdown,160)
}

Har du et bud på det?

Ellers i øvrigt tak for kompetent hjælp.
Avatar billede tjens Nybegynder
23. februar 2010 - 20:57 #6
Du har ikke brug for 2 limitText-funktioner.

Du har brug for at kalde limitText med 2 forskellige sæt parametre.

Og du har måske glemt at rette parameter nummer 2 i kaldet vedr. TekstEfter:
Resultatfeltet er jo det samme som bruges til TekstFoer, og jeg går ud fra at du har 2 countdown-felter?
Avatar billede nemlig Professor
23. februar 2010 - 20:55 #7
Hov - havde ikke set dit indlæg #4, da jeg skrev #5.
Avatar billede nemlig Professor
23. februar 2010 - 21:19 #8
Jeg takker mange gange 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
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