1

这是计算单词的脚本。

  1. 能不能简单点?
  2. 在删除全部或部分单词时,它不会更新值。我试过了,但什么也想不出来。怎么做到呢?
  3. “能不能简单点?” 这应计为五个字。但是检查这个 [不带引号] 这个脚本将它计算为六。怎么了?

HTML 消息: 总字数:0 字。

jQuery

$(document).ready(function () {
    $('#word_count').wordCount();
});

jQuery.fn.wordCount = function (params) {
    var p = {
        counterElement: "display_count"
    };
    var total_words;

    if (params) {
        jQuery.extend(p, params);
    }

    //for each keypress function on text areas
    this.keypress(function () {
        total_words = this.value.split(/[\s\.\?]+/).length;
        jQuery('#' + p.counterElement).html(total_words);
    });
};

小提琴 http://jsfiddle.net/ZmbxS/

4

3 回答 3

6

能不能简单点?

当然可以,使用匹配任何不是空格的单词边界:

$('#word_count').on('keyup', function() {
    $('#display_count').text(this.value.split(/\b\S+\b/g).length-1)
});

小提琴

似乎浪费了使用插件来完成可以轻松完成的事情?

于 2013-07-23T15:12:07.120 回答
0

看到这个:

演示

  1. 您需要“修剪”您的值以确保没有前导/尾随空格(产生提到的 +1)

  2. 我已将此处理程序附加到keyup事件。

代码:

this.keyup(function () {
    my_value = this.value.replace(/^\s+|\s+$/, '');
    total_words = my_value.split(/[\s\.\?]+/).length;
    jQuery('#' + p.counterElement).html(total_words);
});
于 2013-07-23T15:10:40.753 回答
-1

我认为这是您使用的事件的问题。我建议您将函数绑定到更改事件。

对于正则表达式,仅通过?进行拆分是不够的:

stringValue.split(/\s/);

此致。

于 2013-07-23T15:07:14.037 回答