/ 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
JS-tæller virker ikke i FireFox
Fra : Meco


Dato : 03-05-08 19:00

Hej.

Hvordan kan det være, nedtællingen der virker fint i IE, ikke virker i
FireFox - Nogle forslag ?
Se evt. http://kolonihaveportal.dk/kontaktsalg.shtml

Med venlig hilsen
Marco

..js:

<!--
function taLimit() {
var taObj=event.srcElement;

if (taObj.value.length==taObj.maxLength*1) return false;
}

function taCount(visCnt) {
var taObj=event.srcElement;
if (taObj.value.length>taObj.maxLength*1) {
alert('Du har overskredet grænsen på '+taObj.maxLength+' tegn');
taObj.value=taObj.value.substring(0,taObj.maxLength*1);
}
if (visCnt) visCnt.innerText=taObj.maxLength-taObj.value.length;
}
-->

..html:

<td colspan="3" width="314"><textarea class="formu" name="kommentar"
cols="49" rows="4"
onkeypress="return taLimit()" onkeyup="return taCount(MeddelelseCounter)"
maxLength="140"></textarea>
Du har <b><span id="MeddelelseCounter">140</span></b> tegn tilbage i din
beskrivelse.<br>
</td>



 
 
Birger (03-05-2008)
Kommentar
Fra : Birger


Dato : 03-05-08 20:03

"Meco" <meco@ofir.dk> skrev i en meddelelse
news:481ca57a$0$27359$ba624c82@nntp06.dk.telia.net...
> Hej.
>
> Hvordan kan det være, nedtællingen der virker fint i IE, ikke virker i
> FireFox - Nogle forslag ?
> Se evt. http://kolonihaveportal.dk/kontaktsalg.shtml
>
> Med venlig hilsen
> Marco
>
> .js:
>
> <!--
> function taLimit() {
> var taObj=event.srcElement;
>
> if (taObj.value.length==taObj.maxLength*1) return false;
> }
>
> function taCount(visCnt) {
> var taObj=event.srcElement;
> if (taObj.value.length>taObj.maxLength*1) {
> alert('Du har overskredet grænsen på '+taObj.maxLength+' tegn');
> taObj.value=taObj.value.substring(0,taObj.maxLength*1);
> }
> if (visCnt) visCnt.innerText=taObj.maxLength-taObj.value.length;
> }
> -->
>
> .html:
>
> <td colspan="3" width="314"><textarea class="formu" name="kommentar"
> cols="49" rows="4"
> onkeypress="return taLimit()" onkeyup="return taCount(MeddelelseCounter)"
> maxLength="140"></textarea>
> Du har <b><span id="MeddelelseCounter">140</span></b> tegn tilbage i din
> beskrivelse.<br>
> </td>


Sikkert fordi event er en IE specifik ting.
I FF skal eventen overføres som en parameter til kaldet...
F.eks.
function taCount(visCnt, ev) {
evt = window.event ? window.event : ev;
var taObj=evt.srcElement;
.....
}

Birger
-----
http://bbsorensen.dk
http://varmeretter.dk - hverdagsmad. Sundt, nemt, hurtigt og billigt. Daglig
opdatering.



Christian Hansen (03-05-2008)
Kommentar
Fra : Christian Hansen


Dato : 03-05-08 20:39

Birger wrote:

>> <!--
>> function taLimit() {
>> var taObj=event.srcElement;

Og så er srcElement en IE-only ting. I rigtig javascript bruger man
enten event.target eller event.currentTarget, alt efter hvad man ønsker.

Mvh Christian

Meco (03-05-2008)
Kommentar
Fra : Meco


Dato : 03-05-08 20:55

"Birger" <sdc@bbsorensen.com> skrev i en meddelelse
news:481cb6db$0$90262$14726298@news.sunsite.dk...
> "Meco" <meco@ofir.dk> skrev i en meddelelse
> news:481ca57a$0$27359$ba624c82@nntp06.dk.telia.net...
>> Hej.
>>
>> Hvordan kan det være, nedtællingen der virker fint i IE, ikke virker i
>> FireFox - Nogle forslag ?
>> Se evt. http://kolonihaveportal.dk/kontaktsalg.shtml
>>
>> Med venlig hilsen
>> Marco
>>
>> .js:
>>
>> <!--
>> function taLimit() {
>> var taObj=event.srcElement;
>>
>> if (taObj.value.length==taObj.maxLength*1) return false;
>> }
>>
>> function taCount(visCnt) {
>> var taObj=event.srcElement;
>> if (taObj.value.length>taObj.maxLength*1) {
>> alert('Du har overskredet grænsen på '+taObj.maxLength+' tegn');
>> taObj.value=taObj.value.substring(0,taObj.maxLength*1);
>> }
>> if (visCnt) visCnt.innerText=taObj.maxLength-taObj.value.length;
>> }
>> -->
>>
>> .html:
>>
>> <td colspan="3" width="314"><textarea class="formu" name="kommentar"
>> cols="49" rows="4"
>> onkeypress="return taLimit()" onkeyup="return taCount(MeddelelseCounter)"
>> maxLength="140"></textarea>
>> Du har <b><span id="MeddelelseCounter">140</span></b> tegn tilbage i din
>> beskrivelse.<br>
>> </td>
>
>
> Sikkert fordi event er en IE specifik ting.
> I FF skal eventen overføres som en parameter til kaldet...
> F.eks.
> function taCount(visCnt, ev) {
> evt = window.event ? window.event : ev;
> var taObj=evt.srcElement;
> ....
> }
>
> Birger
> -----
> http://bbsorensen.dk
> http://varmeretter.dk - hverdagsmad. Sundt, nemt, hurtigt og billigt.
> Daglig opdatering.

Jeg har prøvet at ændre mit script, men uanset hvad, kan jeg ikke få det til
at virke.
Hvor præcist skal dit eksempel implementeres ?

/Marco



Philip Nunnegaard (04-05-2008)
Kommentar
Fra : Philip Nunnegaard


Dato : 04-05-08 07:58

"Meco" <meco@ofir.dk> skrev i meddelelsen
news:481ca57a$0$27359$ba624c82@nntp06.dk.telia.net...

> Hvordan kan det være, nedtællingen der virker fint i IE, ikke virker i
> FireFox - Nogle forslag ?
> Se evt. http://kolonihaveportal.dk/kontaktsalg.shtml

En meget simpel løsning, der også virker i Firefox:
http://www.hitsurf.dk/privat/charcount.html


Meco (04-05-2008)
Kommentar
Fra : Meco


Dato : 04-05-08 08:58

"Philip Nunnegaard" <nunnenospam@hitsurf.dk> skrev:
> "Meco" <meco@ofir.dk> skrev:
>
>> Hvordan kan det være, nedtællingen der virker fint i IE, ikke virker i
>> FireFox - Nogle forslag ?
>> Se evt. http://kolonihaveportal.dk/kontaktsalg.shtml
>
> En meget simpel løsning, der også virker i Firefox:
> http://www.hitsurf.dk/privat/charcount.html
I dette script er tælleren vedvarende med negativt fortegn efter 0.
Kan man ikke indsætte en slags MaxLenght så tælleren decideret stopper ved 0
tegn, så man ikke kan indtaste flere tegn i textarea.

/Marco



Philip Nunnegaard (04-05-2008)
Kommentar
Fra : Philip Nunnegaard


Dato : 04-05-08 09:37

"Meco" <meco@ofir.dk> skrev i meddelelsen
news:481d6c6a$0$4463$ba624c82@nntp02.dk.telia.net...

> I dette script er tælleren vedvarende med negativt fortegn efter 0.
> Kan man ikke indsætte en slags MaxLenght så tælleren decideret stopper ved
> 0 tegn, så man ikke kan indtaste flere tegn i textarea.

Det var da pokkers. Det virker ikke bare at indsætte maxlength="140" i
<textarea>. Måske det kun virker i HTML 4 - men det burde jo i så fald virke
hos dig, hvis det kun var det der var problemet?
Så er jeg blank.


Philip Nunnegaard (04-05-2008)
Kommentar
Fra : Philip Nunnegaard


Dato : 04-05-08 09:53

"Meco" <meco@ofir.dk> skrev i meddelelsen
news:481d6c6a$0$4463$ba624c82@nntp02.dk.telia.net...

> I dette script er tælleren vedvarende med negativt fortegn efter 0.
> Kan man ikke indsætte en slags MaxLenght så tælleren decideret stopper ved
> 0 tegn, så man ikke kan indtaste flere tegn i textarea.

Jeg fandt en løsning, der skulle virke.
Maxlength er ikke valid html i et textarea.

I javascript-funktionen indsætter du dette:

if(document.getElementById("kommentar").value.length > alertCut) {
document.getElementById("kommentar").value =
document.getElementById("kommentar").value.substring(0,alertCut);
}

På testsiden, http://www.hitsurf.dk/privat/charcount.html har jeg sat
grænsen ned til 10 så det hurtigt kan ses, at det virker.


Erik Ginnerskov (04-05-2008)
Kommentar
Fra : Erik Ginnerskov


Dato : 04-05-08 18:00

Philip Nunnegaard wrote:

> På testsiden, http://www.hitsurf.dk/privat/charcount.html har jeg sat
> grænsen ned til 10 så det hurtigt kan ses, at det virker.

Du kan roligt tilføje på siden, at det også virker i IE 5.0, 5.5 og 6.0

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://vestfynswebdesign.dk - http://html-faq.dk



Meco (04-05-2008)
Kommentar
Fra : Meco


Dato : 04-05-08 18:27


"Philip Nunnegaard" <nunnenospam@hitsurf.dk> skrev:
> "Meco" <meco@ofir.dk> skrev:
>
>> I dette script er tælleren vedvarende med negativt fortegn efter 0.
>> Kan man ikke indsætte en slags MaxLenght så tælleren decideret stopper
>> ved 0 tegn, så man ikke kan indtaste flere tegn i textarea.
>
> Jeg fandt en løsning, der skulle virke.
> Maxlength er ikke valid html i et textarea.
>
> I javascript-funktionen indsætter du dette:
>
> if(document.getElementById("kommentar").value.length > alertCut) {
> document.getElementById("kommentar").value =
> document.getElementById("kommentar").value.substring(0,alertCut);
> }
>
> På testsiden, http://www.hitsurf.dk/privat/charcount.html har jeg sat
> grænsen ned til 10 så det hurtigt kan ses, at det virker.
Du er en knag. Et godt eksempel på cross browser kompatibilitet.
Har aldrig forstået, som Christian nævner, disse "IE-only" ting.

Med venlig hilsen
Marco / Kolonihaveportal.dk



Lasse Reichstein Nie~ (04-05-2008)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 04-05-08 18:55

"Philip Nunnegaard" <nunnenospam@hitsurf.dk> writes:

> if(document.getElementById("kommentar").value.length > alertCut) {
> document.getElementById("kommentar").value =
> document.getElementById("kommentar").value.substring(0,alertCut);
> }

For overskuelighedens skyld vil jeg anbefale at bruge en variabel
frem for at gentage det samme udtryk tre gange:

var textarea = document.getElementById("kommentar");
if (textarea.value.length > alertCut) {
textarea.value = textarea.value.substring(0, alertCut);
}

Det gør det bl.a. nemmere hvis man får brug for at ændre navnet.
Så skal det kun rettes et sted.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Philip Nunnegaard (04-05-2008)
Kommentar
Fra : Philip Nunnegaard


Dato : 04-05-08 19:51

"Lasse Reichstein Nielsen" <lrn@hotpop.com> skrev i meddelelsen
news:63tueyyn.fsf@hotpop.com...

> For overskuelighedens skyld vil jeg anbefale at bruge en variabel
> frem for at gentage det samme udtryk tre gange:

(...)
> Det gør det bl.a. nemmere hvis man får brug for at ændre navnet.
> Så skal det kun rettes et sted.

Helt enig!


Lasse Reichstein Nie~ (04-05-2008)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 04-05-08 13:00

"Meco" <meco@ofir.dk> writes:

> Hvordan kan det være, nedtællingen der virker fint i IE, ikke virker i
> FireFox - Nogle forslag ?
....
> .js:
>
> <!--

Drop "<!--" og "-->" omkring javascript. *Specielt* i separate js-filer!

> function taLimit() {
> var taObj=event.srcElement;

For at være standard-overholdende, så brug:
function taLimit(event) {
var taObj = event.target || event.srcElement; // IE

Eller bare giv elementet med direkte, du har det der hvor
metoden kaldes:
function taLimit(taObj) {

> if (taObj.value.length==taObj.maxLength*1) return false;

Jeg foretrækker mere læselige måder at oversætte fra tekst til
tal, fx Number. Du kan også direkte returnere resultatet af
sammenligningen som en boolean. Og tjek om længden er større
end eller lig med, ikke bare lig med, så du også fanger
paste der indsætter mere end et tegn.
I.e.:
var maxLength = Number(taObj.maxLength);
var length = taObj.value.length;
return length < maxLength;

Et stort problem med denne tilgangsvinkel er at du cancel'er alle
tastetryk når textarea'et er fuldt. Også delete-tast, så man kan ikke
slette noget igen. Jeg kan ikke se en nem måde at forhindre det på.
Tænk også på situationen hvor textarea'et er fuldt og man har selected
noget tekst, og så trykker på et bogstav. Det skal helst virke, men for
at vide det skal man have gang i browserens specielle måde at se om der
er en selection på, og hvor stor den er, etc. Slet ikke nemt.

Bemærk også at et textarea ikke har en maxLength-egenskab i DOM'en
(eller en maxLength-attribut i HTML).
<URL:http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-24874179>
Du skal selv have tilføjet taObject.maxLength, den hvis den skal være
der (eller løbe an på en ikke-standard browser-opførsel).

Ellers kan du prøve:
var maxLength = Number(taObject.getAttribute("maxLength"));
der prøver at læse en HTML-attribut, selvom den ikke hører til i
HTML-definitionen.

Jeg ville nok bare give grænse med som et argument til funktionerne,
i stedet for at gemme den i en ikke-standard HTML-attribut.

> }
>
> function taCount(visCnt) {
> var taObj=event.srcElement;

function taCount(visCnt, event) {
var taObj = event.target || event.srcElement;

eller

function taCount(visCnt, taObj) {

> if (taObj.value.length>taObj.maxLength*1) {
> alert('Du har overskredet grænsen på '+taObj.maxLength+' tegn');
> taObj.value=taObj.value.substring(0,taObj.maxLength*1);
> }
> if (visCnt) visCnt.innerText=taObj.maxLength-taObj.value.length;

innerText er ikke generelt understøttet så godt som innerHTML er. Jeg
ville bruge innerHTML (eller rigtige standardiserede DOM-metoder).

Du returnerer ikke en værdi fra taCount, men jeg kan se at du forsøger
at bruge den i HTML'en.

> }
> -->

(og som sagt, ingen HTML-kommentarer i javascript!)

> .html:
>
> <td colspan="3" width="314"><textarea class="formu" name="kommentar"
> cols="49" rows="4"
> onkeypress="return taLimit()" onkeyup="return taCount(MeddelelseCounter)"

Du bruger "MeddeleseCounter" som om det var en variabel. Det kan du ikke
garantere at det er. For at finde et element med en id, skal du bruge
document.getElementById.

onkeypress="return taLimit(event);"
eller, for at sende taObj med som argument,
onkeypress="return taLimit(this);"

og
onkeyup="taCount(document.getElementById('MeddelesCounter'), event);"
eller, for at sende taObj med som argument,
onkeyup="taCount(document.getElementById('MeddelesCounter'), this);"

(ingen brug for return, da du ikke returnerer noget fra taCount).

> maxLength="140"></textarea>

Et HTML textarea har ikke en maxlength-attribut. Det har input-elementer.


> Du har <b><span id="MeddelelseCounter">140</span></b> tegn tilbage i din
> beskrivelse.<br>
> </td>

Jeg vil anbefale *ikke* at forhindre tastetryk, men holde sig til at
give en advarsel hvis indholdet bliver for stort. Så kan du disable
submit-knappen indtil teksten har den rigtige størrelse igen:

<form action="">
<textarea
onkeyup="var length = this.value.length;
var tooLarge = length > 140;
this.style.border = tooLarge ? '2px solid yellow' : '';
this.form.elements['go'].disabled = tooLarge;
document.getElementById('left').innerHTML = tooLarge ?
(length - 140) + ' for mange'
: 140-length;
"
></textarea>
<input type="submit" name="go" value="Go!">
<br>
<p>Tegn: <span id="left">140</span>
</form>


Hyg!
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Meco (04-05-2008)
Kommentar
Fra : Meco


Dato : 04-05-08 18:51

"Lasse Reichstein Nielsen" <lrn@hotpop.com> skrev:
> "Meco" <meco@ofir.dk> writes:
>
>> Hvordan kan det være, nedtællingen der virker fint i IE, ikke virker i
>> FireFox - Nogle forslag ?

SNIP

Hej Lasse.
Jeg vil bruge Philips forslag, der fungerer fint i mine brugeres browsere
(85%IE/10%FF).

SNIP

> Jeg vil anbefale *ikke* at forhindre tastetryk, men holde sig til at
> give en advarsel hvis indholdet bliver for stort. Så kan du disable
> submit-knappen indtil teksten har den rigtige størrelse igen:
>
> <form action="">
> <textarea
> onkeyup="var length = this.value.length;
> var tooLarge = length > 140;
> this.style.border = tooLarge ? '2px solid yellow' : '';
> this.form.elements['go'].disabled = tooLarge;
> document.getElementById('left').innerHTML = tooLarge ?
> (length - 140) + ' for mange'
> : 140-length;
> "
> ></textarea>
> <input type="submit" name="go" value="Go!">
> <br>
> <p>Tegn: <span id="left">140</span>
> </form>
>
Rigtig god infaldsvinkel med at disable submit-knappen - Dog er '2px solid
yellow' lige lovlig poppet, men kan selvfølgelig ændres :)

Tak for inputtet.

Med venlig hilsen
Marco / Kolonihaveportal.dk



Søg
Reklame
Statistik
Spørgsmål : 177458
Tips : 31962
Nyheder : 719565
Indlæg : 6408153
Brugere : 218880

Månedens bedste
Årets bedste
Sidste års bedste