2014-02-13 30 views
5

我正在使用fastclick和我的引導程序3響應式網站來加速移動設備上的響應時間。通常這工作正常,沒有問題。 但經過多次測試後,我發現這打破了iPhone上的引導單選按鈕。Bootstrap 3單選按鈕不適用於iphone上的fastclick

這些按鈕最初起作用,但如果您更改選定選項,則只有在提交表單時傳遞第一個選定選項。 刪除fastclick會停止此行爲。 或者在我的最小測試頁面上添加fastclick將會使行爲發生。 這發生在safari和iPhone上的鉻。

我發現文章說,添加jquery-mobile並調整單選按鈕的標記也將改善響應時間。 但是我已經在網站中使用了jquery-ui滑塊,並添加了jquery移動衝突。 我的目標是禁用單選按鈕上的fastclick(通過'needsclicks'類)並讓jqmobile處理它。

很多工作已進入自定義網站的滑塊,並使其工作,並在移動設備上看起來不錯。我不希望重新設計整個站點,希望添加jqmobile會有所幫助。我們也沒有時間。

我該如何解決這個問題。我驚訝於我找不到有關使用帶引導單選按鈕的fastclick的任何其他數據。當然,我可以禁用單選按鈕上的快速按鈕,但它使它們使用起來很糟糕,這對於此應用程序來說是不可接受的。

有一些方法我可以手動修復這些單選按鈕,以使用iphone。 這不是Android上的問題。 有沒有修復我找不到?

回答

0

經過一些嚴重的大腦彎曲工作後,我發現問題的原因只會在收音機被選定後纔會發生。這是通過最初設置單選按鈕IE再次顯示預先選定的值的形式。當選擇一個初始值並且選項被改變時(另一選項不同)。這使我相信,實際設置單選按鈕中的值的過程與fastclick衝突。

我注意到的是,當沒有選項被選中時,它將完美工作。因此,必須使用iphone進行測試並在觸摸事件中爲每個標籤添加以下代碼。基本上,每次觸摸時都會完全清除單選按鈕。然後它像每次點擊單選按鈕一樣按下它,就像第一次初始選擇一樣。

$("#radio_button_label_id").bind("touchend", function(e){    
        resetRadio_radioid(); 

}) 

function resetRadio_radioid(){ 
      var ids = array('radio_option_1_id', 'radio_option_2_id', 'radio_option_3_id'); 
      for(i=0; i<ids.length;i++){ 
       //clear all checked data 
       $('#'+ids[i]).prop('checked', false); 
       $('#'+ids[i]).removeAttr('checked'); 
      } 
      return true; 
     } 

這完全解決了這個問題。 希望它有幫助。

相關問題