MozillaPL.org - polskie centrum Mozilli

Główne menu:

[JS] Licznik znaków w textarea - Problem pod FF

Jak tworzyć strony WWW zgodnie ze standardami

Moderator: Pomocy?!

[JS] Licznik znaków w textarea - Problem pod FF

Postautor: DemoNCS » 15 stycznia 2008, 15:07

Przeglądarka: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; FDM; MAXTHON 2.0)

Witam.

Kod: Zaznacz cały
<SCRIPT language="javaScript">

var obj='';
var ilosc=255;
var timer='';
function iloscZnakow(o){
   if (o) obj=o;
   var div=document.getElementById('iloscZnakow');
   div.style.fontWeight='bold';
   var iloscWpisanych = obj.value.length;
   if (iloscWpisanych > 255)
      iloscWpisanych = '<span style="color:red">'+iloscWpisanych+'</span>';
   div.innerHTML='wpisanych znakow '+iloscWpisanych+'/'+ilosc;
   timer=setTimeout('iloscZnakow()', 100);
}
function skoncz(){
   clearTimeout(timer);
   var div=document.getElementById('iloscZnakow');
   div.style.fontWeight='normal';
}

</SCRIPT>
<FORM >
<TEXTAREA onFocus="iloscZnakow(this)" onBlur="skoncz(this)" style="overflow:auto" name="opis" rows="10" cols="40"></TEXTAREA>
<DIV id="iloscZnakow" style="text-align:left;margin-right:10;font-size:10;">wpisanych znakow
<SCRIPT>document.write(parseInt(document.forms[0].opis.value.length))</SCRIPT>/255</DIV>

Jest to licznik znaków w polu textarea.
Dziła pieknie pod IE i zlicza prawidłowo szczególnie znak ENTER, czyli : \n\r

Natomiast w FF zlicza ENTER jako 1(jeden) znak czyli : \n

I tutaj moje pytanie ;)
Czy umial by ktoś przerobić ten licznik tak by działał prawidłowo pod FF i zliczał Enter jako 2 znaki ?

Podobny problem jest opisany tutaj : http://webmade.org/porady/css_html/textarea_znaki.php

Aczkolwiek nie chce stosować w liczniku pola input, tylko tak jak w tym kodzie co podałem.

Pozdrawiam.
DemoNCS
 

[JS] Licznik znaków w textarea - Problem pod FF

Postautor: DemoNCS » 15 stycznia 2008, 18:46

Przeglądarka: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; FDM; MAXTHON 2.0)

Witam ponownie :)

Rozwiązanie problemu było proste :P
Na polskich stronach nie było konkretnej odpowiedzi ^^
Wystarczyło zamienic :
Kod: Zaznacz cały
obj.value.length;
Na :
Kod: Zaznacz cały
obj.value.replace(/\n/g,'\n\r').length;


Pozdrawiam.
DemoNCS
 

Postautor: Mirek » 15 stycznia 2008, 19:38

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11

Wystarczy dodać:
Kod: Zaznacz cały
 + document.forms[0].opis.value.split(/\n/).length-1

czyli rozbić pole tekstowe na tablicę wierszy i sprawdzić ile w wyniku takiej operacji powstało wierszy.
Tylko będziesz musiał rozróżniać przeglądarki - i w zależności od tego dodawać lub nie powyższą wartość - np. tak:
Kod: Zaznacz cały
 + (navigator.appName == "Netscape") ? (document.forms[0].opis.value.split(/\n/).length-1) : 0

- choć wypadałoby posprawdzać jak to w innych przeglądarkach:

Poza tym w temacie Przydatne skryptozakładki są dwa Liczniki znaków - może jakieś rozwiązanie Ci się spodoba, ale to jeśli znasz się na JS. Sposób zliczania opisany w Twoim linku też jest dobry (może więcej pisania, ale za to ciut mniej pamięci pożerania - choć dałoby się jeszcze zoptymalizować, gdyby się tym kierować...). W każdym razie nikt nie zmusza do stosowania inputa - bo wyliczoną wartość możesz równie dobrze przekazać do funkcji document.write().
parseInt() w Twoim kodzie chyba nie jest potrzebny.

Pozdrawiam,
Mirek

-----
Update
Widzę, że w międzyczasie znalazłeś już jakieś rozwiązanie - tylko czy po takiej przeróbce dobrze zlicza w IE? Bo podejrzewam, że tu też trzeba rozróżniać jaka przeglądarka jest używana...
Mirek
Moderator
 
Posty: 2152
Z nami od: 09 sierpnia 2007, 20:37

[JS] Licznik znaków w textarea - Problem pod FF

Postautor: DemoNCS » 16 stycznia 2008, 11:10

Przeglądarka: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; FDM; MAXTHON 2.0)

Mirek [PL] pisze:Update
Widzę, że w międzyczasie znalazłeś już jakieś rozwiązanie - tylko czy po takiej przeróbce dobrze zlicza w IE? Bo podejrzewam, że tu też trzeba rozróżniać jaka przeglądarka jest używana...

Stosuje 2 skrypty :)
Przegladarke wykrywam za pomocą PHP a nie JS.
Aczkolwiek.. pobawie sie kodem jaki wpisałeś w swoim poscie :)

Na JS sie nie znam niestety... i nie chce sie tego uczyć dla jednego licznika :)

Jesli tą zmiane zastosować przy IE którą podałem.. to zamiast 2 znaków zlicza 3 ^^
Ta zmiana w kodzie potrafi też zmusić przegladarke IE do czytania ENTER jako jeden znak, w FF nic nie zmienia wtedy :)
Podobno prawidłowo powinno być \n a nie \n\r :)

Tylko że w bazie danych zapisanie takiego tekstu z enter równa sie 2 znaki, a nie chce nic kombinować już przy skrypcie :)

Pozdrawiam.
DemoNCS
 


Wróć do Tworzenie stron WWW

Kto jest online

Zarejestrowani użytkownicy: Google [Bot]

Przejdź do powiązanej strony

Nawigacja:

Stopka: