2011-11-30 33 views
1

我正在使用JqueryUI自動完成功能。源碼方法後,我寫入選擇方法。在那個ui.item.value顯示結果我選擇的價值,但ui.item.id不工作它顯示'未定義'。我怎樣才能得到選擇的價值ID?請找我的代碼在這裏http://jsfiddle.net/hari034/R8xGA/我如何獲得Jquery UI中選定值的「ID」自動完成

示例代碼URL回報:

3045:媽媽:孟買^

說明:

3045:placeID

MUM:地點代碼

孟買:地點名稱。

^:全部置於從DB隔開來了「^」

+0

問題是過於抽象。你能粘貼你的代碼嗎? – meson10

+0

我的代碼鏈接http:// jsfiddle。3045:網/ hari034/R8xGA/ –

+0

請提供樣品從applicationURL(阿賈克斯) –

回答

0

我已經準備了某種分辨率,爲您的問題。沒有直接的方式從自動完成獲取信息(或者至少我不知道它)。請在這裏找到工作示例:http://jsfiddle.net/R8xGA/3/

基本上,您需要將結果id保存在全局數組中,稍後在select中進行訪問。

希望它有幫助!

編輯:基本上,你需要添加3個元素

  1. 之前for(indx=0;indx<f.length-1;indx++){附加陣列復位ids = new Array;
  2. 在for語句聲明與值ID陣列作爲重點ids[f1[2]] = f1[0];
  3. 路線從您的陣列信息在選擇階段ids[ui.item.value]

PS。如果你有重複的值,這個技巧將不起作用。加入對這種用例的支持是很困難的。

最佳, 馬立克

+0

謝謝Marek,它對你的邏輯工作正常。但它需要幾秒鐘來顯示result.here我有一個疑問,我可以給源作爲「result.jsp」。我的要求是用戶可以在文本框中輸入placeName或Placecode,在這兩種情況下,我都必須填寫地點name.other請給我建議,很好的例子。 –

+0

我不確定我是否理解你正在努力實現的目標。是的,你可以在那裏使用result.jsp並且即時生成內容。我使用了靜態返回,因爲我沒有準備好。如果您可以託管可以通過互聯網訪問的api,我可以在本例中使用它(經過一些調整,因爲跨域會有問題)。 –

+1

另一件事是,如果你想改變輸入值(例如通過添加ID),那麼它就沒有問題了......但是,在我不確定你的目標是什麼之前,我已經告訴過你了。如果你可以進一步描述它。 –

2

ui.item.idundefined因爲你沒有在自動完成的源代碼將它添加到每個item。你可以在你的AJAX調用調整您succeess功能做到這一點:

success: function(data) { 

    fromPlacesNamesList = new Array(); 
    var f = data.split("^"); 
    for (indx = 0; indx < f.length - 1; indx++) { 
     var f1 = f[indx].split(':'); 
     fromPlacesNamesList[indx] = { label: f1[2], id: f1[0] }; 
    } 
    response(fromPlacesNamesList); 
    return false; 
} //success 

另外,你應該已經從你的循環之外調用response

更新了例:http://jsfiddle.net/7GBTH/

+0

謝謝安德魯,是否有任何區別寫回應for循環?在我放入它之前它工作正常,但自動建議它需要2-5秒的時間。 –

+0

謝謝安德魯,是否有任何區別寫for循環的反應?在我放入它之前工作正常,但自動建議需要2-5秒的時間來填充。我還有另一個問題,如果搜索地名與'NEL'的自動建議顯示'NEGLORE','NELORE'....爲什麼它顯示開始NEG ...?我檢查了我的Java類響應開始NEL ..但自動完成顯示NEG ... NEL ..... –

+0

@hari:您正在構建發送到窗口小部件的建議列表。這意味着你必須讓你的for循環運行並填充該列表。在循環中調用'response'會在每次迭代時通知widget的建議,我不認爲這是你想要的。至於這些建議的問題,它可能與您的服務器端(Java)代碼有關。 –