0

好的,所以我在 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

4

1 回答 1

1

问题是您定义“单词”的方式。正\b则表达式转义序列仅识别[a-zA-Z0-9]为“单词字符”。

> "Привет как дела".match(/\b/g);
null

我认为您想要做的是将您的单词沿空格分开:

> "Привет как дела".split(/\s+/);
["Привет", "как", "дела"]
于 2013-08-31T19:55:42.867 回答