我终于取得了空字符串的感谢(非常感谢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"
}
}
现在看一下屏幕截图:
注意到我的数组中的单词有时是重复的,因此留空了输入字段吗?
这是我创建检查以查看长度是否等于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;
});
}
答案 0 :(得分:1)
keyup
事件将在每次击键时触发。如果这是您想要的,则可能应该检查该元素是否已存在于数组中,否则将其压入。另一种选择是使用change
事件,该事件仅触发一次,或者使用blur
事件,当输入失去焦点时触发。