2015-02-10 72 views
2

我正在使用Bootstrap select將原生選擇轉換爲twitter bootstrap下拉列表。Bootstrap select不會觸發移動設備上的更改事件

我有問題,change事件沒有觸發iOS或Android設備上普通的瀏覽器上的PC是否正常工作。如果我使用庫的本地元素支持,則在這些設備上觸發更改事件。

$('.selectpicker').selectpicker({ 
     style: 'btn-info', 
     size: 4 
    }); 


var submitSearchForm = function() { 
    $(this).parents('form').submit(); 
}; 


$('.selectpicker').on('blur change', submitSearchForm); 

任何想法?

+0

你的代碼是在jQuery的文件準備好之後加載的嗎? – PaoloCargnin 2015-02-10 13:47:12

+0

裝入文件準備就緒 – Azd325 2015-02-10 13:47:56

+0

您能告訴我如何使用更改事件嗎? – PaoloCargnin 2015-02-10 13:51:19

回答

1

測試(IOS,Safari和Chrome,Android的鉻,桌面版Chrome & FF),它爲我工作得很好。

的jsfiddleDemo with the plugin and latest Bootstrap

的問題是不是與插件,並可能與一些額外的代碼。

做測試與調試的一些微小的變化:

  • 刪除模糊事件 - 這將提交表單當您單擊選擇框,對於一些不明原因的插件焦點,並立即模糊選擇框時點擊選擇框。
  • 確保您在DOM準備好的情況下觸發了您的js - 請使用$(function(){ });或將您的腳本放在關閉的BODY標記之前。
  • 更改選擇器 - 默認情況下,插件會識別.selectpicker並僅用於測試,因此請確保它不會添加可能導致不需要的行爲的不需要的事件。
  • 使用擴展名爲jQuery debuger的chrome開發工具。選擇檢查器的選擇框 - >進入「jQuery事件」選項卡,並確保「更改」事件已附加,只有他,另一個「更改」事件可能導致此問題。
  • 確保表單中沒有〜「提交」事件 - 它可能會阻止表單提交。
  • 確保表單標籤的action屬性設置正確或根本沒有定義。確保選擇框是窗體的子窗體,窗體已正確關閉。

很明顯,問題是由我們看不到的其他代碼引起的 - 如果這些測試不適用於您,請添加代碼或演示以重現您遇到的問題,我們將更有能力幫你。

+0

感謝您的大回復,併爲js小提琴證明,它似乎工作。現在我必須找到我身邊的問題。如果我找到答案,我會接受你的答案。 – Azd325 2015-02-18 14:32:55

1

好的,這可能是因爲在頁面中引導選擇的呈現。這應該工作

$(document).on('change','.selectpicker',submitSearchForm) 

,或者在替代

$("body").on('change','.selectpicker',submitSearchForm)

+0

謝謝我會嘗試 – Azd325 2015-02-10 13:56:07

+0

我添加了一個替代方案;) – PaoloCargnin 2015-02-10 13:57:50

+0

沒有幫助iOS和Android的變化事件仍然​​沒有觸發。 – Azd325 2015-02-10 14:21:20

相關問題