2010-07-02 6 views
3

두 개의 선택 요소가 있습니다. 첫 번째 선택에 대한 선택을하면 두 번째 선택에 대한 옵션이 구성됩니다. 데스크톱 브라우저에서 잘 작동합니다.iPhone에서 동적 선택이 작동하지 않습니다.

iPhone에서 첫 번째 선택을하고 "다음"을 선택한 후에는 두 번째 선택 항목에 옵션이 채워지지 않습니다. 지금까지이 작업을 수행하는 유일한 방법은 두 번째 선택에서 다시 이전 "One"로 이동 한 다음 다시 "Next"를 두 번째 선택으로 이동하는 것입니다. "완료"를 클릭 한 다음 두 번째 선택을 탭하는 다른 방법.

.change()와 .click()을 모두 시도했는데 둘 다 동일한 결과를 산출했습니다. 다음은

은 JS이며, 여기에 동작하는 예제 http://damonomania.com/select/

모든 제안은? 티아!

$(document).ready(function(){ 

    $('#select-1').change(function() { 
     show_options(); 
    }); 

    function show_options() { 
     var id = $('#select-1').val(); 
     $('#select-2 option:gt(0)').remove(); 
     $.each(options[id], function(k,v) { 
      $('#select-2').append('<option value="' + k + '">' + v + '</option>'); 
     }); 
    } 
}); 

var options = {"17":{"835":"870","836":"871"},"18":{"435":"870","436":"871"},"13":{"1":"123546"},"19":{"1213":"4010","1206":"4015"}} 
+0

그냥 내 iPhone 4G에서 시험해 보니 정상적으로 작동하는 것 같습니다. 매번 제가 첫 번째 것을 바꿨을 때 두 번째 것은 새로운 가치를 가졌습니다. – spinon

+1

@spinon 다시 시도 할 수 있습니까? 동적 select를 업데이트하여 첫 번째 select와 관련된 의미를 갖습니다. 따라서 "Something 2"가 선택되면 새로운 값은 "From 2a, From 2b"등이어야합니다. 그러면 이전 부실 선택이 아닌지를 알 수 있습니다. 감사합니다. – gorelog

+0

다시 저를 위해 일하십시오. – spinon

답변

3

내 사이트에서 동일한 문제가있었습니다. select 컨트롤의 selectedIndex 속성을 수동으로 폴링하여 문제를 해결할 수있었습니다. 그렇게하면 목록의 항목을 "확인"하자마자 실행됩니다. 다음은이 작업을 수행하기 위해 작성한 jQuery 플러그인입니다.

$.fn.quickChange = function(handler) { 
    return this.each(function() { 
     var self = this; 
     self.qcindex = self.selectedIndex; 
     var interval; 
     function handleChange() { 
      if (self.selectedIndex != self.qcindex) { 
       self.qcindex = self.selectedIndex; 
       handler.apply(self); 
      } 
     } 
     $(self).focus(function() { 
      interval = setInterval(handleChange, 100); 
     }).blur(function() { window.clearInterval(interval); }) 
     .change(handleChange); //also wire the change event in case the interval technique isn't supported (chrome on android) 
    }); 
}; 

"변경"이벤트와 마찬가지로 사용합니다. 예를 들어 :

$("#mySelect1").quickChange(function() { 
    var currVal = $(this).val(); 
    //populate mySelect2 
}); 

편집 : 새 값을 선택을 누를 때 안드로이드는 선택에 초점을하지 않지만, 그것은 또한 아이폰이하는 동일한 문제가 없습니다. 따라서 이전 change 이벤트를 연결하여 문제를 해결하십시오.

+0

나는 이것을 빨리 시험해 보았고 iOS 4에서 작동한다는 것을 알게되어 기뻤습니다! 공유해 주셔서 감사합니다. 나는 이것을 많이 사용할거야! – gorelog

관련 문제