2011-10-06 7 views
9

Mam rozwijane menu dynamicznego wyboru. Na przykład, jeśli wybierzesz określony miesiąc, drugi element zostanie wypełniony liczbą dni w danym miesiącu.Zmień wydarzenie nie uruchamiające się na wybranych elementach za pomocą "Asystenta formularzy" w przeglądarce Safari Safari

Działa to zgodnie z przeznaczeniem, jednak gdy użytkownik jest na iPhonie i używa przycisku "Dalej" wbudowanego w "asystenta formularzy" Mobile Safari, zdarzenie change (przy użyciu jQuery) nie wydaje się być uruchamiane, a drugi wybór nie aktualizuje się.

$('.month').change(function() { 
    // update "days" select element 
}); 

FYI Używam również jQuery mobile

+0

dowolne wyjście w debuggerze iPhone'a (tryb debugowania Safari)? –

+0

Brak. Myślę, że to może być mobilny bug safari. – wdm

Odpowiedz

2

Najlepsze oparcie, jakie mogłem znaleźć, było oparte na tym poście ...

Strange behavior of select/dropdown's onchange() JS event when using 'Next' on Mobile Safari Dropdown list item select box

Używanie wtyczki (z linku powyżej), musiałem jak najszybciej opcja została wybrana z „asystent formy” Mobile Safari zmusić wybierz menu blur.

Zauważyłem jednak, że gdy brutalne życie testuje te menu, dodatkowe zdarzenie blur będzie uruchamiane po kilku selekcji w tył iw przód. Wydaje się, że dodatkowy focus to naprawił.

$('select').quickChange(function() { 
    $(this).blur(); 
    $('select').focus(); // somehow prevents an extra blur from firing on focus 
}); 

Przy pomocy oddzielnej funkcji change dynamicznie aktualizuję drugie menu wyboru.

$("#select-choice-month").change(function() { 
    // update second select dynamically 
}); 

* Testowany do tej pory tylko na Mobile Safari/iOS 5.0.1.

5

Można także powiązać pewne dodatkowe imprezy jak blur (nie wiem, czy plama robi ogień na iPhone chociaż)

$('.month').bind('change blur',function(){ 

}); 

lub mieć próbowałeś:

$('.month').live('change',function(){ 
}); 
+0

Dzięki za sugestię. Próbowałem kilku różnych wydarzeń, ponieważ myślałem, że to może być problem. Nie udało się uzyskać ognia. – wdm

+0

@wdm zaktualizował moją odpowiedź – Andy

+0

Wybrany miesiąc jest statyczny w DOM, więc funkcja 'live()' nie wydaje mi się konieczna. Zrobiłem to i tak bez powodzenia. – wdm