Temat: Liczenie polskich znaków w textarea

Witam,

Przyszło mi się zmierzyć z ciekawym problemem. Otóż potrzebuje zliczać znaki wpisywane w textarea, ale z podziałem na polskie znaki.
Dokładniej ma to wyglądać tak: Jeśli wpisze polski znak to do licznika ma się dodawać liczba 2 a jeśli zwykły znak to dodawać liczbę 1.

Np.: ktoś wpisze "koń" i wyświetli 4 znaki. Jeśli ktoś wpisze "kot" to 3 znaki.

Wujek Google pomaga gdy chce liczyć znaki w normalny sposób, a takiego różnego liczenia różnych znaków nie znalazłem. A sam z JavaScriptem nie jestem zbytnio zaznajomiony.

Czy jest ktoś w stanie mi pomóc, coś podpowiedzieć, ewentualnie podesłać jakieś rozwiązanie, jeśli ktoś miał już z takim czymś do czynienia?

Z góry wielkie dzięki :)
pozdrawiam.

konto usunięte

Temat: Liczenie polskich znaków w textarea

zrób tablicę polskich znaków i potem sprawdż czy każda litera z textarea znajduje się w tej tablicy jak tak to dodajesz 2 do licznika jak nie to 1

konto usunięte

Temat: Liczenie polskich znaków w textarea

Inny sposób:

function countStrLen(str) {
str = str.replace(/\n|\t|\r/igm, '');
str = str.replace(/[^\w\d,.()\[\]]/igm, '##');
return str.length;
}


Zasada jest prosta:
- usuwa z tekstu wszystkie znaki nowej linii, tabulacji, karetki - które nie powinny być wg mnie liczone,
- zamienia wszystkie znaki niepasujące (polskie litery nie łapią się w znacznik \w) na ## (jeden znak na dwa znaki)
- zwraca długość powstałego ciągu

Temat: Liczenie polskich znaków w textarea

Dzięki za szybką odpowiedź.

Sposób z tablicą coś mi działać nie chce, ale drugi sposób działa dobrze, tylko z jednym mankamentem.

Mam takie coś:

$("#HEADER1").keyup( function() {

var str = $("#HEADER1").val();
str = str.replace(/\n|\t|\r/igm, '');
str = str.replace(/[^\w\d,.()\[\]]/igm, '##');
$("#wyswietlznaki").html(str.length);

} );


Ładnie zlicza, ale gdy usuwam tekst i zejdę poniżej 10 to zostawia zero na końcu.
Np.: wpisałem 15 znaków, usunę 6 znaków i wynik będzie 90, a nie 9.

Czy obcinać to ostatnie zero (jeśli tak to w jaki sposób?), czy jest na to jakieś inne rozwiązanie?Bartłomiej Jańczak edytował(a) ten post dnia 15.03.12 o godzinie 12:20

konto usunięte

Temat: Liczenie polskich znaków w textarea

Ładnie zlicza, ale gdy usuwam tekst i zejdę poniżej 10 to zostawia zero na końcu.
Np.: wpisałem 15 znaków, usunę 6 znaków i wynik będzie 90, a nie 9.

Czy obcinać to ostatnie zero (jeśli tak to w jaki sposób?), czy jest na to jakieś inne rozwiązanie?

Skrypt jest ok, sprawdziłem u siebie na szybko (całość pliku):

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

<input id="x" type="text" />
<div id="y">0</div>

<script type="text/javascript">
$('#x').keyup(function () {
var str = $('#x').val()
.replace(/\n|\t|\r/igm, '')
.replace(/[^\w\d,.()\[\]]/igm, '##');
$("#y").html(str.length);
});
</script>


Końcowe 0 musi Ci się dodawać z jakiejś innej przyczyny. Może dynamicznie doklejasz gdzieś wartość w div'a z długością tekstu?

Temat: Liczenie polskich znaków w textarea

Przede wszystkim wynik wrzucałem do spanu. Zmieniłem na Div i chodzi tak jak u Ciebie.

Dzięki wielkie panowie, wszystko działa :)

konto usunięte

Temat: Liczenie polskich znaków w textarea

Bartłomiej Jańczak:
Przede wszystkim wynik wrzucałem do spanu. Zmieniłem na Div i chodzi tak jak u Ciebie.

Dzięki wielkie panowie, wszystko działa :)

Bez różnicy czy div, czy span, "u mnie działa" :) Cieszę się, że i u Ciebie zaskoczyło :D

Następna dyskusja:

Podgląd textarea "na żywo"




Wyślij zaproszenie do