我遇到了一个问题,我可以使用强力延迟来解决这个问题,并且如果我可以从jQuery调用中获得回调,并且想知道是否有人对此问题有另一种了解,我也可以解决。
以下是代码:
/*
* Now fill the fields then lastely selecte the Select2 List value to display selected task
*/
for (var i = 0; i < numMilestoneTasks; i++) {
$($(".ctaskSelector")[i]).val(taskData[i].task_ID).trigger('change');
$($(".project_task_ID")[i]).val(taskData[i].project_task_ID )
$($(".task_allocated_hours")[i]).val(taskData[i].allocated_hours )
$($(".task_start_date")[i]).val(taskData[i].start_date );
$($(".task_end_date")[i]).val(taskData[i].end_date );
$($(".task_tag_info")[i]).val(taskData[i].tags );
}
现在它的工作方式是我有一个名为.ctaskSelector
的Select2下拉列表,它已经预先填充了5个选项,而我想要显示的那个由语句触发:
$($(".ctaskSelector")[i]).val(taskData[i].task_ID).trigger('change');
正如您所看到的,numMilestoneTasks
选择2下拉列表。问题是循环非常快,只有第一个select2选项被激活,触发器在其他选项上丢失。我可以通过放慢速度来使它工作,as with the code below
。如果目标是纯输入文本框,它也可以工作,因此它可能是一个select2问题。其他一些方法,如回调是理想的,但我看不出如何去做。
setTimeout(function() {
for (var i = 0; i < numMilestoneTasks; i++) {
$($(".ctaskSelector")[i]).val(taskData[i].task_ID).trigger('change');
$($(".project_task_ID")[i]).val(taskData[i].project_task_ID )
$($(".task_allocated_hours")[i]).val(taskData[i].allocated_hours )
$($(".task_start_date")[i]).val(taskData[i].start_date );
$($(".task_end_date")[i]).val(taskData[i].end_date );
$($(".task_tag_info")[i]).val(taskData[i].tags );
}
}, 100);
有没有人对我如何解决这个问题有任何见解?