好的,所以我在这里有这个脚本jsfiddle.net/CDLtn/2/
计算单词并根据是否选中任何复选框显示值
它的工作正常,除了一件事,它不适合俄罗斯的投入。
$(function () {
var wordCounts = {};
$("input[type='text']:not(:disabled)").keyup(function () {
var matches = this.value.match(/\b/g);
wordCounts[this.id] = matches ? matches.length / 2 : 0;
var finalCount = 0;
var x = 0;
$('input:checkbox:checked').each(function () {
x += parseInt(this.value);
});
x = (x == 0) ? 1 : x;
$.each(wordCounts, function (k, v) {
finalCount += v * x;
});
$('#finalcount').val(finalCount)
}).keyup();
$('input:checkbox').change(function () {
$('input[type="text"]:not(:disabled)').trigger('keyup');
});
});
我找到了一个开源计数器http://roshanbh.com.np/2008/10/jquery-plugin-word-counter-textarea.html,这个确实接受了俄语输入(这里是jsfiddle.net/Joniniko/TyPSJ/上面链接的小提琴)
我需要以某种方式使我的原始计数器与俄罗斯输入一起工作,或者将复选框功能合并到Roshan制作的那个。
这是一个俄罗斯文本的例子,只是加入“Приветкакдела”
(我的源页面编码已经改为UTF-8,我也尝试过其他的用于西里尔文输入)
UPD:jsfiddle.net/Joniniko/CDLtn/5/这接受俄语输入,但是对于某些我不知道的原因,它会将计数器增加0.5而不是1
答案 0 :(得分:1)
问题在于你定义“单词”的方式。 \b
正则表达式转义序列仅将[a-zA-Z0-9]
识别为“单词字符”。
> "Привет как дела".match(/\b/g);
null
我认为你想要做的就是沿着空格分开你的话:
> "Привет как дела".split(/\s+/);
["Привет", "как", "дела"]