textarea中的单词总数返回11

Dav*_*ard 1 jquery keyup

我有一个简短的例程,它应该获得textarea中的单词数,然后将该数字输出到target.然而,无论实际上有多少单词,它总是返回11.

我确信这很简单,但我看不出来,所以如果有人能给我一些指示,我会很感激.谢谢.

jQuery(document).ready(function($){

    var target = $('.dd-options #wp-word-count .word-count');

    jQuery('textarea#welcome_text').on('keyup', function(){

        var text = $(this).val,
            word_count = $.trim(text).split(' ').length;

        target.html(word_count);

    });

});
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 5

jQuery val是一个函数,所以你必须调用它(通过放置()它):

jQuery(document).ready(function($){

    var target = $('.dd-options #wp-word-count .word-count');

    jQuery('textarea#welcome_text').on('keyup', function(){

        var text = $(this).val(), // <====================== here
            word_count = $.trim(text).split(' ').length;

        target.html(word_count);

    });

});
Run Code Online (Sandbox Code Playgroud)

你的代码正在做的是toString(隐式)调用一个函数(在大多数浏览器中返回函数源代码的某个版本),然后计算其中的"单词".

旁注:在这种情况下,既然你试图得到a的值textarea,你也可以使用textarea's内置value属性而不是jQuery的val函数:

var text = this.value,
Run Code Online (Sandbox Code Playgroud)

而不是

var text = $(this).val(),
Run Code Online (Sandbox Code Playgroud)

(和)元素value上的属性是非常可靠的跨浏览器.textareainput

  • ......或者只是`this.value`. (2认同)