2014-10-05 44 views
16

我有三個下拉列表,一個列表填充頁面加載並不會更改。第二個和第三個列表可能會根據選擇而改變。此功能工作正常。jquery bootstrap selectpicker基於前面的列表選擇刷新列表

我試圖添加Bootstrap selectpicker到選擇器,我可以看到它工作 - 不幸的是,列表不刷新的基礎上的選擇。我實際上認爲「幕後」他們是因爲我可以看到查詢被傳遞,但通過前端沒有任何反應。在HTML的

部分:

<!-- SelectPicker --> 
<link href='//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.6.2/css/bootstrap-select.min.css' rel='stylesheet' type='text/css'> 
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script> 

的是通過PHP創建,但前兩個DDL是

<select id='ddl_first_lookup' onchange='ajaxFirstOnChange(this.value)' value='' class='selectpicker'></option> 
<select id='ddl_second_lookup' onchange='ajaxSecondOnChange(this.value)' class='selectpicker'> 
<select id="ddl_third_lookup" onchange='ajaxThirdLookup(this.value)' class='selectpicker'></select> 

我有以下的Javascript:

$(document).ready(function() { 
    $(".selectpicker").selectpicker(); 
}); 

這是點在我發現問題的地方,我試圖在ajax中實現這個功能,但沒有成功 - 甚至不知道它是否正確。

$('.selectpicker').selectpicker('refresh'); 

我對所有這些都很新穎,所以想要一些幫助。

+0

懷疑問題是由我自己調用.selectpicker('refresh');在錯誤的時刻。 – 2014-10-05 20:11:34

回答

31

我發現你的問題後,有同樣的問題。添加項目到我的列表完成後,添加$('.selectpicker').selectpicker('refresh');做了這項工作。
所以你可能需要找到放置它的正確位置。也許在你的ajax調用的成功部分。

+0

是的,就這麼簡單 - 我只需要更好地理解這一切!謝謝。 – 2014-10-06 19:58:08

+0

這在我的情況下工作,謝謝。 – 2016-02-17 11:43:21

+0

當我修改選擇字段的屬性時(例如,設置屬性標題),我遇到了類似的問題。在這之後調用'selectpicker'(帶或不帶''refresh'')導致值未被選中。當我在改變屬性之前調用函數時,它工作正常。 – Leukipp 2016-12-01 19:51:14

7

我從我這方面的經驗,到目前爲止理解 -

如果要添加動態選項下拉,那麼你一定需要只是一旦你完成了添加選項

$(".selectpicker").selectpicker(); 

前下方的功能調用添加選項然後調用以下功能(如果您正在使用AJAX來添加選項,然後把這個功能轉化爲成功一部分只是簡單地回答雅典娜)

$('.selectpicker').selectpicker('refresh'); 

如果您面臨的任何奇怪的問題,如顯示下拉不是數據或某些時候下拉不能正常顯示,那麼肯定你肯定犯了錯誤,放置功能,沒有別的。

1

在我的Ajax successCallBack我試圖操縱其ID列表下拉爲reasonCode基於dynamicId(值從服務器獲取)如下:

$('#reasonCode option[value='+dynamicId+']').prop('selected', true); 

,但不幸的是這並沒有工作,直到我添加另一條線在此之後,如下:

$('#reasonCode').selectpicker('refresh'); 
2

時隱時現更改selectpicker類名:

<select name="key" class="selectpicker_oncreate"> 

當清爽:

$('.selectpicker_oncreate').selectpicker('refresh'); 
0

如果刷新方法不能解決問題,嘗試加入一些延遲。

setTimeout(() => { 
     jQuery('.selectpicker').selectpicker('refresh'); 
    }, 500); 
相關問題