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!==''})
部分删除空字符串。
我心中最简单的解决方案如下:
//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; }
获取textarea的值,并将其拆分为空格字符,这将为您提供一个数组。 然后返回该数组的长度。
更新为空字符串http://jsfiddle.net/ghyDs/1/