jQuery – 计算TEXTAREA中的单词

好吧,我有一个Javascript函数,它返回我写入textarea的单词数,但由于某些原因,我想用Jquery编写它。 并且,虽然我尝试过,但我没有设法得到它,所以这就是为什么我在这里,如果你能帮助我,我将非常非常感激。

这是Javascript:

function contar() { palabras = 1; if (document.data.texto.value.length === '') palabras = 0; for (count = 0; count < document.data.texto.value.length; count++) { if (document.data.texto.value.substring(count, count + 1) == ' ') palabras++; } document.data.cuenta.value = palabras;} 

这是我制作的jQuery:

 (function () { var palabras = 1; if ($("[name=data] textarea[name=texto]").val().length === "") { palabras = 0; } for (i = 0; i < $("[name=data] textarea[name=texto]").val().length; i++) { if ($("[name=data] textarea[name=texto]").val().substring(i, i + 1) == ' ')) { palabras++; } } }); 

最后,这是我用来显示它的HTML:

 

工作解决方案:

 function contar(){ alert($.trim($('[name="texto"]').val()).split(' ').filter(function(v){return v!==''}).length); } 

filter(function(v){return v!==''})部分删除空字符串。

http://jsfiddle.net/qhaYH/

我心中最简单的解决方案如下:

 //function function countWords(tx){ return tx?tx.replace(/ +/g," ").replace(/\w+| $|^ /g,"").length+1:0; } //jQuery plugin $.fn.countWords = function(){ return countWords(this.val()) ; }; 

示例HTML:

  

WordsCount:0

JS:

 $tester = $("#tester"); $tester.keyup(function(e){ $("#counter").text($tester.countWords()); }); 

http://jsbin.com/EfukoYIs/3/edit?html,js,output

编辑
最后,我改变了概念,只计算正确含义的单词(没有特殊的字符等)。 代码如下:

 //function function countWords(tx){ return tx.replace(/\w+/g,"x").replace(/[^x]+/g,"").length; } 

IMO它好多了。 http://jsbin.com/EfukoYIs/5/edit?html,js,output

获取textarea的值,并将其拆分为空格字符,这将为您提供一个数组。 然后返回该数组的长度。

更新为空字符串http://jsfiddle.net/ghyDs/1/