我数组中的单词没有明显原因重复

时间:2018-07-09 12:14:31

标签: javascript jquery json

我终于取得了空字符串的感谢(非常感谢Mark),但是我忙于检查,并且我发现它无缘无故地重复了数组中的单词。看看我的JSON,然后看截图。

JSON:

{
"main_object": {
"id": "new",
"getExerciseTitle": "Let's go",
"language": "nl_NL",
"application": "lettergrepen",
"main_object": {
  "title": "Let's go",
  "language": "nl_NL",
  "exercises": [
    {
      "word": "huisartsenpraktijk",
      "syllables": [
        "huis",
        "artsen",
        "praktijk"
      ]
    },
    {
      "word": "Terschelling",
      "syllables": [
        "ter",
        "schelling"
      ]
    },
    {
      "word": "voetbalclub",
      "syllables": [
        "voet",
        "bal",
        "club"
      ]
    }
  ]
},
"dataType": "json"
}
}

现在看一下屏幕截图:

enter image description here

注意到我的数组中的单词有时是重复的,因此留空了输入字段吗?

这是我创建检查以查看长度是否等于JSON长度的方法:

if (exercise.syllables.length === correctSylls.length) {
$(this).closest('.syll-row').find('input.syl-input').addClass('btn btn-success').removeClass('form-control').prop('disabled', true);
 }

这就是完整功能的样子(我删除了不相关的部分,只保留了相关部分)。

       var correctSylls = [];

    $.map(exercise.syllables, function (syllable, j) { 
        var sylInput = $('<input/>', {
            'type': 'text',
            'class': 'form-control syl-input',
            'name':  +c++,
            'id': +idsyll++
        }).on('keyup', function() {
            var cValue = $(this).val();
            if (cValue === syllable) {
              correctSylls.push(cValue);
              console.log(correctSylls);
            }
            if (exercise.syllables.length === correctSylls.length) {
                $(this).closest('.syll-row').find('input.syl-input').addClass('btn btn-success').removeClass('form-control').prop('disabled', true);
            } 
        });
    });
    idsyll = 0;
});
}

1 个答案:

答案 0 :(得分:1)

keyup事件将在每次击键时触发。如果这是您想要的,则可能应该检查该元素是否已存在于数组中,否则将其压入。另一种选择是使用change事件,该事件仅触发一次,或者使用blur事件,当输入失去焦点时触发。