2010-10-06 51 views
9

我們正在開發一個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

+0

我有同樣的問題。 – 2010-11-15 13:24:51

+0

這裏也是同樣的問題。仍然沒有運氣的解決方案。 – 2010-11-18 01:30:00

+1

我一直無法重現您遇到的問題。此[簡單演示](http://jsbin.com/ogona4/7)似乎在我的第一代iPod touch上運行得非常好,運行iOS 3.1 – brianpeiris 2010-11-18 06:08:31

回答

2

也許你可以使用焦點事件,jQuery中,這將是:

$('#select2').focus(function() { 
    // update select2's elements 
}); 

雖然真正的問題是,當iPhone超載進來,而當事件被解僱。在這個視圖中,選擇選項也可以改變。

+0

我和OP有同樣的問題。我嘗試過focus(),blur()和change(),但iPhone似乎仍在緩存列表內容,直到再次點擊Next/Prev。 – 2010-11-18 01:29:05

+1

是的,同樣的,嘗試focus(),blur()和change(),這些工作都沒有。此外,爲什麼upvote不起作用,甚至沒有測試。 – 2010-11-18 15:31:20

0

我在我的網站上遇到了同樣的問題。我能夠通過在選擇控件上手動輪詢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事件來修復它。

相關問題