我計算contenteditable
中的字數。我用空格分割它。當你輸入一個新行時會出現問題。它不會計算您正在新行上寫的單詞,直到您添加一個空格。在contenteditable中添加新行時,字數錯誤
最重要的是,在下面的例子中,如果你分割示例文本分爲兩行,將「吃掉」一個詞,當你做到這一點:
我猜這問題存在,因爲HTML元素之間沒有空格:
<div>some things</div><div>are cool</div>
其字符串將是「有些東西很酷」。
下面是我的代碼:
function wordCount() {
var content_text = $('#post_content').text(),
char_count = content_text.length,
word_count = 0;
// if no characters, words = 0
if (char_count != 0)
word_count = content_text.replace(/[^\w ]/g, "").split(/\s+/).length;
$('.word_count').html(word_count + " words • " + char_count + " characters");
}
我試圖替換一些HTML標籤:
word_count = content_text.replace(/ /g, " ").replace(/<div>/g, "<p>").replace(/<\/div>/g, "</p>").replace(/<\/p><p>/g, " ").split(/\s+/).length;
沒有任何的運氣。我需要丟棄它是否是<p>
或<div>
以及某些瀏覽器在合併行時添加
。
任何想法?謝謝!
編輯: 感謝低於他的聰明方法傑弗森,我設法解決這個問題。出於某種原因,我必須做-1上word_count
以顯示正確的字數:
function wordCount() {
var content_div = $('#post_content'),
content_text,
char_count = content_div.text().length,
word_count = 0;
// if no characters, words = 0
if (char_count != 0)
content_div.children().each(function(index, el) {
content_text += $(el).text()+"\n";
});
// if there is content, splits the text at spaces (else displays 0 words)
if (typeof content_text !== "undefined")
word_count = content_text.split(/\s+/).length - 1;
$('.word_count').html(word_count + " words • " + char_count + " characters");
}
sashok - 優秀的問題。很詳細。感謝您使用jsfiddle – 2013-02-21 18:06:16
計數關閉,甚至沒有輸入: 'console.log(content_text.replace(/ [^ \ w]/g,「」).split(/ \ s + /));'第一個索引是一個空的字符串。 – epascarello 2013-02-21 18:11:31