jQuery - 计算TEXTAREA中的单词

时间:2013-11-21 22:05:32

标签: javascript jquery

好吧,我有一个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:

<form name="data">
    <textarea name="texto" cols="40" rows="4" onkeyup="contar()" onkeypress="contar()"></textarea>
    <br>
    <input type="Text" name="cuenta" size="3" maxlength="3">
</form>

3 个答案:

答案 0 :(得分:2)

工作解决方案:

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

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

http://jsfiddle.net/qhaYH/

答案 1 :(得分:1)

我想到的最简单的解决方案如下:

//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:

<textarea id="tester"></textarea>
<p>WordsCount:<span id="counter">0</span></p>

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

答案 2 :(得分:-2)

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

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

<script type="text/javascript">
    function contar() {
        var value = $.trim($('[name="texto"]').val()),
            count = value == '' ? 0 : value.split(' ').length;

        $('[name="cuenta"]').val(count);
    }
</script>