2011-11-14 34 views
0

以下是代碼 - http://jsfiddle.net/and7ey/k2J5v/8/。一旦按下按鈕,應在那裏選擇默認值(value="0")。如何爲jQuery UI組合框定義選定的值?

我已經試過

$("#cbCity").val("0"); // cbCity - combobox 

但它不工作。看起來我也需要更改輸入元素的值。

這樣的變化應該是不是請致電select

Upd。我也試過the following

$("#cbCity").html('<option value="0" selected>Any city</option>'); 
$("#cbCity").val("0"); 

它不起作用。

+0

你需要讓你的Ajax調用每次點擊下拉?或者,您是否可以在加載一次並在停留期間使用這些數據? – Jacksonkr

+0

@傑克遜,我想我可以加載一次最受歡迎的城市名單,但我肯定不會加載整個名單。 –

+0

@LA你有一個很大的名單嗎?如果是這樣,也許你可以同步加載它? – Jacksonkr

回答

1

好了,所以我覺得有兩件事情正在進行:

  1. 你不是wireing了點擊事件,以正確的對象。你有$("#toggle").click(),但你真的想要$("#showAnyCity").click()
  2. 當你改變選擇列表項目和你的AJAX呼叫回來,你不是重新添加'任何城市'和'其他城市'的選項。如果沒有值爲「0」的選項,則比.val("0")不會執行任何操作。您可能需要將服務器端添加到AJAX調用中發回的結果中,或者將它們添加到JavaScipt中的選擇列表中。
+0

Re 1 - 是的,對不起,只是複製了錯誤的代碼;)。 Re 2 - 稍後會嘗試,謝謝。 –

+0

嗯,我試過選項2的值=「倫敦」(服務器返回這樣的值),但是不起作用 - http://jsfiddle.net/and7ey/k2J5v/14/。而且,我不知道如何在客戶端添加一個選項。 –

1

這就是你想要我想的那樣!

現在我已經完成了jQuery UI的組合框,因爲你需要它。

您需要添加一個功能下面

autocomplete : function(value) { 
    this.element.val(value); 
    this.input.val(value); 
} 

文提到的和你需要這樣的

$('#cbCity').combobox('autocomplete', 'Any city'); 

我已經用這個新檢查出這個更新打電話:

http://jsfiddle.net/Fa9Hs/62/

+0

你已經使用標準的選擇,而不是jQuery的UI組合框... –

9

Here's your huckleberry.

什麼

  • 移離_create代碼的頁面。這樣用戶不必每次點擊都等待數據。代碼在頁面加載時發生一次,就是這樣。您可能希望將其移至DOM Ready。
  • 原作select默認隱藏,所以你不會看到風格的變化ui.combobox
  • 更改了您的ui.combobox項目佈置方式,使「任何城市」位居榜首。
  • 當你點擊#showAnyCity然後自定義cb和原始cb都重置。組合選擇菜單也會關閉(以防打開)。

快樂編碼

+1

爲更大的想法,而不僅僅是眼前的問題,對這種情況良好的整體建議! – BenSwayne

+0

好的解決方案,但.find(':first')將始終返回第一個項目,而不是選定的項目。我唯一的變化是: 'var sel_str ='any'; ('。ui-autocomplete-input')。val($(「#cbCity」).val(sel_str).find(「:selected」).val());' 'sel_str'是任何價值。 編輯:命中輸入,而不是移位輸入:( – gusterlover6

+0

@ gusterlover6自從我寫這個以來已經有一段時間了,但我的理解是「顯示任何城市」按鈕只是強調要素「任何城市」,這是靜態的第一個元素,因此細分:'show' *任何城市* – Jacksonkr