【问题标题】:Ignore strings under 3 characters in word count忽略字数中少于 3 个字符的字符串
【发布时间】:2014-04-18 09:09:40
【问题描述】:

我这里有这个脚本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”的解决方案有效,已解决。

【问题讨论】:

标签: javascript jquery html string checkbox


【解决方案1】:

改变

   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 与输入单词长度相乘
相反,你可以做

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

【讨论】:

  • 这个 x = (x == 0) 是什么意思? 0:x;做?我的意思是说,当 x 的值为 0 时,条件为真,您将 0 分配给 x。为什么你需要这个声明?
  • @RupamDatta 编写实际代码是为了避免将 0 分配给 x。我已经更新了我的答案
  • @Karma 他是对的,不过,您现在可以完全省略x = (x == 0) ? 0 : x 这行,它没有任何用处。
  • @IngoBürk:同意,但代码需要更多修改。我已经更新了我的答案
  • 长度解决方案仅在其小于 2 时忽略第一个输入,如果我在第一个小于 2 的空格之后输入内容,则它们将被计算在内而不是被计算
【解决方案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

【讨论】:

  • 只输入1个字不显示数字,也没有解决忽略特定长度的问题,但感谢您的努力
  • 解决了我的第一个问题,谢谢,但是你上面的海报已经解决了这个问题,我目前的问题是让字数忽略 3 个字符以下的条目,如果你查看我的原始帖子,我进行了编辑,并攻击了一把小提琴
  • -1:如果您不知道它是否或如何工作,请不要发布。
  • @IngoBürk 改写了帖子。
猜你喜欢
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
  • 2019-05-26
相关资源
最近更新 更多