TextArea中的字长错误

时间:2013-09-18 17:32:11

标签: jquery

我正在尝试计算用户在文本区域中键入的单词数

$("#word_count").on('keyup', function() {        
         var text = $(this).val;
         word_c = $.trim(text).split(' ').length;
$('#display_count').text(word_c);
});

然而,我总是得到错误的结果。我错过了什么?

http://jsfiddle.net/drxgw/

4 个答案:

答案 0 :(得分:3)

两个问题:

  1. 您试图使用jQuery对象的val属性,而不是val()方法(括号不是可选的),并且
  2. 您在以下行中声明了一个全局变量,更正了这一点:

    $("#word_count").on('keyup', function () {
        var text = $(this).val(),
            word_c = $.trim(text).split(' ').length;
        $('#display_count').text(word_c);
    });
    
  3. JS Fiddle demo

    此外,您的代码中存在多个空格字符导致错误结果的问题(在上面的演示类型'one [space] [space] [space] two'中,计数将为4);纠正这个:

    $("#word_count").on('keyup', function () {
        var text = $(this).val(),
            word_c = $.trim(text).split(/\s+/).length;
        $('#display_count').text(word_c);
    });
    

    JS Fiddle demo

    允许字数限制:

    $("#word_count").on('keydown', function (e) {
        var text = $(this).val(),
            words = $.trim(text).split(/\s+/),
            word_c = words.length;
        $('#display_count').text(word_c);
        return word_c < 21 || e.which == 8;
    });
    

    JS Fiddle demo

    参考文献:

答案 1 :(得分:2)

更改此行代码!

var text = $(this).val();
谢谢先生。托马斯,这就是你需要的东西

$("#word_count").on('keyup', function () {
    var text = $(this).val(),
        word_c = $.trim(text).split(/\s+/).length;
    $('#display_count').text(word_c);
});

对于您的评论限制,您可以这样做

$("#word_count").on('keydown', function () {
    var text = $(this).val(),
    word_c = $.trim(text).split(/\s+/).length;
    $('#display_count').text(word_c);
    if(word_c > 19)
       return false;
});

Demo JSFiddle

答案 2 :(得分:0)

$("#word_count").on('keyup', function() {        
         var text = $(this).val();
         word_c = $.trim(text).split(' ').length;
$('#display_count').text(word_c);
});

你在$(this).val

上缺少括号

答案 3 :(得分:0)

试试这个:

$("#word_count").on('keyup', function() {        
         var text = $(this).val();
         word_c = $.trim(text).split(/[ ]+/).length;
$('#display_count').text(word_c);
});

它还会考虑由多个空格分隔的单词。 Split接受正则表达式。