我們正在開發一個Web應用程序,並且定製了可在iPhone上使用的GUI。應用程序頁面上有3個後續SELECT下拉菜單,其中第一個下拉菜單中的選項會從第二個下拉菜單中選擇選項,等等。隨後的下拉選項由基於on previous change的onchange事件的javascript填充。 問題是,在iPhone上,SELECT的選項會顯示'prev'和'next'鏈接以移至上一個和下一個控件。當點擊「下一個」鏈接時,控制轉到下一個選擇並顯示選項。 JavaScript由前一個SELECT的onchange事件觸發,並填充下一個SELECT的選項。但是在第二個SELECT的下拉列表中,顯示之前的選項,然後由javascript重新填充。 有沒有一種解決方法或事件,可以順序JavaScript的執行,然後選擇下一個控制?當選擇SELECT選項並且在控制離開SELECT元素之前,是否可以觸發任何事件? SELECT下拉選項顯示的Next和Previous鏈接是否有句柄?在iPhone上處理HTML SELECT選項並將事件委託給javascript Safari
回答
也許你可以使用焦點事件,jQuery中,這將是:
$('#select2').focus(function() {
// update select2's elements
});
雖然真正的問題是,當iPhone超載進來,而當事件被解僱。在這個視圖中,選擇選項也可以改變。
我和OP有同樣的問題。我嘗試過focus(),blur()和change(),但iPhone似乎仍在緩存列表內容,直到再次點擊Next/Prev。 – 2010-11-18 01:29:05
是的,同樣的,嘗試focus(),blur()和change(),這些工作都沒有。此外,爲什麼upvote不起作用,甚至沒有測試。 – 2010-11-18 15:31:20
我在我的網站上遇到了同樣的問題。我能夠通過在選擇控件上手動輪詢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
});
編輯:Android不集中的選擇,當你點擊它選擇一個新的價值,但它也沒有說iphone做了同樣的問題。所以通過連接舊的change
事件來修復它。
- 1. Javascript:瞭解事件委託處理
- 2. iphone檢測委託事件
- 3. 關於C#委託/事件處理
- 4. C#委託事件處理程序SelectedIndexChanged
- 5. C#委託與事件處理程序
- 6. 在事件委託上使用 - =時,System.ArgumentException未處理?
- 7. Visual Studio測試項目可以處理事件和委託嗎?
- 8. 委託事件
- 9. 將獨特的jQuery事件處理程序委託給子元素
- 10. 爲什麼我無法將事件處理程序2委託給深層?
- 11. 爲什麼我無法將處理程序委託給此滾動事件?
- 12. Akka流和委託處理給演員
- 13. 將多個事件的JQuery委託附加到處理程序
- 14. jQuery的委託()/上() - 事件
- 15. JavaScript中的「事件委託」和「事件處理」之間的區別是什麼?
- 16. Javascript Html事件處理
- 17. 委託ItemClick事件處理到孩子的單擊事件處理(scaleform)
- 18. 爲什麼不把Javascript事件委託給極端?
- 19. 事件委託給子視圖Backbone.js的
- 20. 將事件委託給表單而不創建循環引用
- 21. 將事件和委託事件處理程序傳遞到泛型Helper方法
- 22. 將選定選項傳遞給其他元素上的事件處理函數
- 23. 事件處理程序在委託類型中拋出錯誤?
- 24. 在靜態工廠方法中分配事件處理委託
- 25. 需要處理的事件從<select>選擇選項?
- 26. 設置在委託上的事件
- 27. 多線程委託/事件
- 28. 事件委託在C++中
- 29. 事件委託(在)平等?
- 30. 回調處理委託時處理?
我有同樣的問題。 – 2010-11-15 13:24:51
這裏也是同樣的問題。仍然沒有運氣的解決方案。 – 2010-11-18 01:30:00
我一直無法重現您遇到的問題。此[簡單演示](http://jsbin.com/ogona4/7)似乎在我的第一代iPod touch上運行得非常好,運行iOS 3.1 – brianpeiris 2010-11-18 06:08:31