2011-09-18 2 views
1

경주가로드 될 때 선택 옵션을 업데이트하는 사이트를 만들었습니다. 사용자가 경주를 선택하면 일련의 선택 상자가 표시됩니다. 주자가 이전에 장소에 배정 된 경우 경주가로드 된 후 주자가로드됩니다. 이것은 (Firefox, Chrome, Safari) 모든 웹 브라우저에서 정상적으로 작동하지만 iPad에서 주로 작동하지는 않습니다. 선택 옵션 Do not Update iPad에서 jQuery를 사용하여 업데이트

는 장소 업데이트 나는 부분에 대해 가지고있는 자바 스크립트 코드입니다 : 나는 비의 jQuery 방법을

$.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); 
    }); 
} 

시도했지만, 모든 것을 나는했습니다 done은 iPad에서 같은 문제를 발생시킵니다. 배치 된 주자를위한 학교는 첫 번째 선택 목록에로드되지 않으므로 러너 선택 목록이 비어있게됩니다. 나는 값을 테스트하라는 경고를 할 때 때때로 작동하도록했습니다. 그러나 이것은 매번 작동하지 않습니다. 또한 setTimeout을 사용하여 loadRunners 함수의 실행을 지연 시키려고했지만 그 역시 도움이되지 않았습니다. 어떤 아이디어라도 높이 평가할 수 있습니다. 라이브 사이트는 invite.ymsrunning.com/results.php에서 볼 수 있습니다. "결과 입력"을 클릭 한 다음 결과를 보거나 설정할 경주를 선택하십시오.

+0

PHP 스크립트에서 반환 한 데이터를 공유해주십시오. 일부 HTML이 도움이 될 수도 있기 때문에 더 나은 점은 [jsfiddle.net] (http://jsfiddle.net/)에서 코드의 데모를 만드는 것입니다. – Mottie

답변

0

2 개의 PHP 아약스 호출이 반환하는 것을 보지 않고 스크립트가 어렵다고 생각하는 모든 것을 수행한다고 말할 수 없습니다.

하지만 iPad 관련 문제 일 수도 있고 이상 할 수도있는 이상한 점도 있습니다. 당신은이 같은 변수 place을 설정

if (place != 'false') 

그 두 선이 호환되지 않습니다 : loadRunners의 내부 다음

var place = tempRunner[2]-1; 

, 당신은로 사용합니다. 첫 번째 줄은 숫자로 tempRunner[2]을 처리하는 것으로 보입니다.하지만 그것은 나처럼 보입니다. 문자열에서 숫자를 뺀 것이 유용하지는 않습니다. 이 일을 위해 당신이 수를 의미하는 경우에, 당신은 아마하고 싶은 것 :

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

그런 장소는 "false"를 의미하기 때문에 많이하지 않습니다 할 수 loadRunners의 비교를하는 경우 당신은 숫자와 비교해야합니다.

관련 문제