2011-10-06 61 views
9

我有動態選擇下拉菜單。例如,如果選擇特定的月份,則第二個select元素將填充該月的天數。使用Mobile Safari「表單助手」更改事件不會觸發選定元素

這可以按預期工作,但是當用戶在iPhone上並使用內置於Mobile Safari的「表單助手」中的「下一步」按鈕時,change事件(使用jQuery)不會觸發,第2次選擇不更新。

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

FYI我還使用jQuery Mobile的

+0

iPhone調試器(Safari調試模式)的任何輸出? –

+0

無。我認爲這可能只是一個移動Safari瀏覽器的bug。 – wdm

回答

2

我能找到的最好的解決方法是基於這個帖子...

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

使用插件(從上面的鏈接),我不得不盡快作爲一個選項被選擇與移動Safari瀏覽器的「表單助理」強制選擇菜單blur

然而,我注意到,當蠻力測試這些菜單時,一些額外的blur事件會在幾次前後選擇後觸發。額外的focus似乎解決了這個問題。

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

使用單獨的change函數,我正在動態更新第二個選擇菜單。

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

*僅在目前爲止在Mobile Safari/iOS 5.0.1上進行了測試。

5

您還可以結合一些額外的活動,如blur(不知道是不是不模糊火iphone雖然)

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

}); 

或有你試過了:

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

感謝您的建議。我嘗試了幾個不同的事件,因爲我認爲這可能是問題所在。無法得到任何消防。 – wdm

+0

@wdm更新了我的回答 – Andy

+0

月份選擇在DOM中是靜態的,所以我不相信'live()'函數是必要的。無論如何,我都給了它一個鏡頭,沒有運氣。 – wdm

相關問題