[php+js] Ograniczenie znaków w textarea z licznikiem

0

Cześć. Mam textarea, do której można wpisać załóżmy 300 znaków. Chcę, żeby liczba z pozostałą ilością znaków do wpisania pokazywała się w jakimś edicie obok(tak jak to jest na darmowej smsowej bramce ery). Zrobiłem sobie coś takiego:

echo '<textarea max='.$maxchar.' name="comment" rows=5 cols=40 onKeyup="charsLeft(document.gb.comment, document.gb.sisa, '.$maxchar.');">'.$comment.'</textarea>';

gdzie $maxchar to maksymalna ilość znaków do wpisania. Funkcja charsLeft wygląda tak:

function charsLeft(textarea, counter, maxchars)
{
  counter.value = maxchars - textarea.value.length;
  if(parseInt(counter.value)<0) { counter.value='0'; }
  textarea.value = textarea.value.substr(0, maxchars);
}

Jak dla mnie wszystko jest fajnie. Ale problem pojawia się np. wtedy, gdy mam dwie linijki tekstu i chcę dopisać coś do pierwszej. Po prostu nie można przejść kursorem na górę. Jak chcę się cofnąć kursorem, to też nie mogę tego zrobić. Czemu? o co chodzi?

0

Ponieważ właśnie się uczę troszkę o JavaScript postanowiłem spróbować, czy uda mi się coś podobnego osiągnąć. Poniżej mój kod:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="pl" xml:lang="pl">
<head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
      <title>.:[Title]:.</title>
      <script type="text/javascript">
function change() {
 t= document.getElementById("tx");
   var s=t.value;
   l=document.getElementById("l");
   if(s.length>300){
   s=s.substr(0, 300);
   t.value=s;}
   d=300-parseInt(s.length);
   l.innerHTML=d;
 }
  </script>
</head>
<body>
<p>
<textarea id="tx" onkeyup="change()" name="comment" value="" rows="5" cols="40" >
</textarea>
 <label id="l" >300</label>
</p>
</body>
</html>

Nie jest to idealne rozwiązanie, działa dość dziwacznie, ale działa i nie ma tak jak u ciebie, że czegoś tam nie można.

0

OK, dzięki wielkie, działa idealnie :)

0

Cieszę się, że mogłem pomóc. Ale jak napisałem, działa to dość dziwacznie. Po pierwsze, jeżeli przytnie linię do długości 300, to ustawia się na początku tekstu. I nie wiem jak to poprawić. Druga sprawa, to proponuję zamienić onkeyup na onchange, bo jak się wciśnie klawisz i trzyma, to pozwala wpisywać dowolnie długą linię. A, no i ja to tylko pod FF sprawdzałem. Ostatnio miałem problem z innerHTML pod IE, więc warto zerknąć, czy to tam działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1