2012-12-23 18 views
5

Chciałbym dodać słowo i liczbę znaków do textarea za pomocą jQuery, chociaż znalazłem tylko wtyczki do ograniczenia znaków i słów.Liczba słów i znaków za pomocą jQuery

Chciałbym aktualizować w czasie rzeczywistym, tak aby za każdym razem, gdy użytkownik doda znak lub słowo, licznik aktualizuje się.

Czy istnieje prosty sposób sprawdzania słów i znaków?

+0

Użyj. Length, aby sprawdzić liczbę znaków. Liczba słów zwykle nie ma znaczenia, chyba że jest to coś w rodzaju eseju, ponieważ możesz zrobić verrryyyyyyyyyyyyyyyloooooooooooooooooooooooongwooooooooooooooord. – nhahtdh

+1

$ ("textarea"). Html(). Split ("") .length –

+4

Nienawidzę brzmiąc niegrzecznie, ale szukałem w Google "[jquery count words] (https://www.google.co.uk/#hl= pl & safe = off & tbo = d & sclient = psy-ab & q = jquery + count + words & oq = jquery + count + words & gs_l = hp.3..0l4.973.5328.0.5436.18.8.0.9.9.0.200.715.7j0j1.8.0.les% 3B .. 0.0 ... 1c.1.L1JWGBTTwDs & pbx = 1 & bav = on.2, or.r_gc.r_pw.r_cp.r_qf. & Bvm = bv.1355534169, d.d2k & fp = f42fee5d8e10998d & bpcl = 40096503 & biw = 1235 & bih = 683) "i [pierwszy wynik jest dokładnie tym, czego szukasz] (http://stackoverflow.com/questions/7422192/jquery-count-words-in-real-time). A dla długości to tylko długość. Więc naprawdę nie wyszukujesz bardzo ciężko. –

Odpowiedz

45

function wordCount(val){ 
 
    var wom = val.match(/\S+/g); 
 
    return { 
 
     charactersNoSpaces : val.replace(/\s+/g, '').length, 
 
     characters   : val.length, 
 
     words    : wom ? wom.length : 0, 
 
     lines    : val.split(/\r*\n/).length 
 
    }; 
 
} 
 

 

 
var textarea = document.getElementById("text"); 
 
var result = document.getElementById("result"); 
 

 
textarea.addEventListener("input", function(){ 
 
    var v = wordCount(this.value); 
 
    result.innerHTML = (
 
     "<br>Characters (no spaces): "+ v.charactersNoSpaces + 
 
     "<br>Characters (and spaces): "+ v.characters + 
 
     "<br>Words: "+ v.words + 
 
     "<br>Lines: "+ v.lines 
 
); 
 
}, false);
<textarea id="text"></textarea> 
 
<div id="result"></div>

jsFiddle demo

+0

Czy istnieje sposób, aby zaktualizować go w czasie rzeczywistym? – user1919937

+0

Pewnie dodałem demo w mojej odpowiedzi –

+0

To działa! Dziękuję Ci! Również próbowałem [dodać to] (http://jsfiddle.net/deepumohanp/jZeKu/), chociaż dostałem błąd składni, czy wiesz, co to zrobi? – user1919937

-1

W/O jQuery:

this.innerHTML gives you the textarea content. 
this.innerHTML.length gives you the number of characters. 

z jQuery:

$(this).html() 

itp

Jestem pewien, że można wymyślić prostego algorytmu liczenia słowo.

+0

Textarea ma treść w HTML-u, która nie ma wartości. –

+0

Tak, naprawiono, tnx – TheZuck

+0

Testowałem to. Oba możliwe .val(), .html() .... –

6
char_count = $("#myTextArea").val().length; 
word_count = $("#myTextArea").val().split(" ").length; 
+1

To podejście bardzo surowe, ale nie bierze się pod uwagę ciągłej białej spacji lub wielu znaków spacji, które w podejściu ręcznym nie będą uważane za nowe słowo. –

-1
jQuery(document).ready(function(){ 
    var count = jQuery("#textboxid").text().length; 
}); 
+0

Nie chcę ograniczać słów i znaków, po prostu chcę je liczyć – user1919937

+0

długość to atrybut, ciąg nie ma długości metody() –

0
var txt = $('.content')[0].text() 
    , charCount = txt.length 
    , wordCount = txt.replace(/[^\w ]/g, "").split(/\s+/).length 
    ; 
$('#somwhereInYourDocument').text("The text had " + charCount + " characters and " + wordCount +" words"); 

Read more

Powiązane problemy