2011-09-18 86 views
1

使用jQuery我做的时候加载比赛,更新选择选项的网站。当用户选择一场比赛时,它会弹出一系列选择框。如果赛跑运动员以前被分配到一个地方,那么他们将在比赛加载后加载。这在我尝试过的每个网页浏览器(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

请你分享一下php脚本返回的数据。更妙的是,因为一些HTML也会有所帮助,使代码的演示过上[jsfiddle.net(http://jsfiddle.net/) – Mottie

回答

0

我不能说我遵循脚本试图做的一切,因为很难看到两个PHP ajax调用返回的内容。

但是,我看到一个奇怪的现象,可能会或可能不会涉及到iPad的问题。您可以设置变量place这样的:

var place = tempRunner[2]-1; 

然后loadRunners的里面,你使用它作为:

if (place != 'false') 

这两行是不兼容的。第一行似乎是治疗tempRunner[2]为数字,但它看起来对我来说,这是一个字符串。从字符串中减去一个数字不太可能有用。如果您意味着它是一个数字,那么你可能会想要做的:

var place = parseInt(tempRunner[2], 10) - 1; 

然后,如果地方是一个数字,在loadRunners比较“假”不使一个很大的意义,因为你应该比较一个数字。