$(document).ready(function() {
$("[class^='count[']").each(function() {
var elClass = $(this).attr('class');
var minWords = 0;
var maxWords = 0;
var countControl = elClass.substring((elClass.indexOf('['))+1, elClass.lastIndexOf(']')).split(',');
if(countControl.length > 1) {
minWords = countControl[0];
maxWords = countControl[1];
}
else { maxWords = countControl[0]; }
$(this).after('<div class="wordCount"><strong>0</strong> words so far</div>');
if(minWords > 0) {
$(this).siblings('.wordCount').addClass('error');
}
$(this).bind('keyup click blur focus change paste', function() {
var numWords = jQuery.trim($(this).val()).split(' ').length;
if($(this).val() === '') {
numWords = 0;
}
$(this).siblings('.wordCount').children('strong').text(numWords);
if(numWords < minWords || (numWords > maxWords && maxWords != 0)) {
$(this).siblings('.wordCount').addClass('error');
}
else {
$(this).siblings('.wordCount').removeClass('error');
}
});
});
});
这个脚本基本上计算单词之间的空格,但是如果添加了额外的空格,它也将它们视为新单词......
http://blog.themeforest.net/tutorials/creating-a-jquery-word-counter/
答案 0 :(得分:9)
.split()
也接受正则表达式。试试这个:
var numWords = jQuery.trim($(this).val()).split(/\s+/).length;
答案 1 :(得分:3)
使用Regex删除所有双空格,然后执行脚本。如果没有要找到的双重空格,则无法计算它们。
这是C#中的一个示例,但javascript代码相同:How do I replace multiple spaces with a single space in C#?