在字数统计中忽略3个字符以下的字符串

时间:2014-04-18 09:09:40

标签: javascript jquery html string checkbox

我在这里有这个脚本http://jsfiddle.net/slashingweapon/7JmGn/

$(function () {
var wordCounts = {};
$("input[type='text']:not(:disabled)").keyup(function () {
    var matches = this.value.trim().split(/\s+/);
    wordCounts[this.id] = matches ? matches.length : 0;
    var finalCount = 0;
    var x = 0;
    $('input:checkbox:checked').each(function () {
        x += parseInt(this.value);
    });
    x = (x == 0) ? 1 : x;
    $.each(wordCounts, function (k, v) {
        finalCount += v * x;
    });
    $('#finalcount').val(finalCount)
}).keyup();
$('input:checkbox').change(function () {
    $('input[type="text"]:not(:disabled)').trigger('keyup');
});

应该对单词进行计数,并根据是否选中了一个或多个复选框来更改右侧的值。

我有2个问题,首先是我如何让它最初显示0而不是1。

我的第二个问题是,我希望它忽略特定长度(2-3)下的标点符号和单词,例如“as,in,no”。

编辑:第一个问题已经解决了,感谢“Karna”,但他的长度解决方案对我来说似乎不起作用:http://jsfiddle.net/y4Bp5/1/

相反,它只忽略空格前的第一个输入,如果它在特定长度下

编辑2:“Rummap Datta”的解决方案有效,已解决。

2 个答案:

答案 0 :(得分:4)

更改

   x = (x == 0) ? 1 : x;  

   x = (x == 0) ? 0 : x;

这会将0设为默认值

您可以添加this.value.length检查以忽略特定长度的字

 $("input[type='text']:not(:disabled)").keyup(function () {
        if(this.value.length > 2){
           var matches = this.value.trim().split(/\s+/);
           // Rest of the code
        }  
 });

修改
将默认值更新为0将使结果始终为0,将x与输入词lenght进行多次比较 相反,你可以做到

 $("input[type='text']:not(:disabled)").keyup(function () {
        //.....    
         x = (x == 0) ? 1 : x;  
        //......
        if(x==1){
           $('#finalcount').val(0);
        }else{
           $('#finalcount').val(finalCount);
        }   
    }).keyup();

答案 1 :(得分:2)

你能试试吗?

根据我对这个问题的理解,我改变了几行代码。请检查。

 $('input:checkbox:checked').each(function () {     
     x += parseInt(this.value);
 });

 $.each(wordCounts, function (k, v) {
     finalCount=(matches==0)? 0 : (finalCount + (v * x));
 });
 $('#finalcount').val(finalCount);

FIDDLE

为第二个问题添加解决方案的更多更改。请检查它是否有帮助。

tempCount=0;
    for(i=0;i<matches.length;i++){
        if(matches[i].length>2){
            tempCount++;
        }
    }

    finalCount=tempCount*x;

    $('#finalcount').val(finalCount);

<强> FIDDLE 2