我创建了一个网站,在加载比赛时更新选择选项。当用户选择比赛时,它会弹出一系列选择框。如果跑步者先前被分配到一个地方,那么他们将在比赛加载后加载。这在我尝试过的每个网络浏览器(Firefox,Chrome,Safari)中都能很好地工作,但不能在iPad上使用,而iPad则主要用于它。
这是我更新地方的部分的Javascript代码:
$.post('getRunnerPlacements.php', {gender: race}, function(data) {
var runners = data.split('*RUNNER*');
var savedRunners = runners.length-1;
for (var i=0;i<savedRunners;i++)
{
var tempRunner = runners[i].split('*INFO*');
var place = tempRunner[2]-1;
var dd = $('#school'+place);
dd.val(tempRunner[3]);
loadRunners(place,race,tempRunner[0]);
}
});
...
function loadRunners(i,gender,place)
{
var school = $('#school'+i+' option:selected').val();
$.post('getRunners.php', {school:school,gender:gender}, function(data) {
var runners = data.split('*RUNNER*');
runners.pop();
$.each(runners, function(key, value) {
var temp = value.split('*INFO*');
$('#runner'+i)
.append($('<option>', { value : temp[0] })
.text(temp[1]));
});
if (place != 'false')
$('#runner'+(i)).val(place);
});
}
我尝试过非jQuery方法,但我所做的一切都会导致iPad出现同样的问题。放置跑步者的学校将不会加载到第一个选择列表中,这会导致跑步者选择列表显示为空白。当我发出警告来测试值时,我偶尔会让它工作,但这并不是每次都有效。我还尝试使用setTimeout延迟执行loadRunners函数,但这也没有帮助。任何想法将不胜感激。您可以在以下网址查看实时网站:invite.ymsrunning.com/results.php。单击“输入结果”,然后选择要查看或设置结果的竞赛。
答案 0 :(得分:0)
我不能说我遵循脚本试图做的所有事情,因为很难看到两个PHP ajax调用返回的内容。
但是,我确实看到了一些与iPad问题有关或可能没有关系的奇怪内容。您可以像这样设置变量place
:
var place = tempRunner[2]-1;
然后在loadRunners中,您将其用作:
if (place != 'false')
这两行不兼容。第一行似乎是将tempRunner[2]
视为一个数字,但它看起来像是一个字符串。从字符串中减去一个数字不太可能有用。如果你的意思是它是一个数字,那么你可能想要这样做:
var place = parseInt(tempRunner[2], 10) - 1;
然后,如果place是一个数字,loadRunners中的比较为“false”并没有多大意义,因为你应该与一个数字进行比较。