我想使用ajax自動完成。所以我的目標是有:電梯 - 使用Ajax提交自動完成
當用戶鍵入的東西在文本字段中,由服務器提供的一些建議出現(我必須找到一個數據庫的建議)
當用戶按下「輸入」,在自動填充框中單擊其他位置,或者當他/她選擇建議時,文本字段中的字符串將被髮送到服務器。
我第一次嘗試使用通過電梯提供的自動完成構件,但我面臨三個問題:
- 它意味着是一個擴展的選擇,也就是說,你可以原本只提交建議值。
- 它並不意味着與ajax一起使用。
- 它與
WiringUI
結合時會出現錯誤。
所以,我的問題是:我怎樣才能將jquery autocomplete與電梯中的服務器交互。我想我應該使用一些回調,但我不掌握它們。
在此先感謝。
UPDATE這是第一個實現我試過,但回調不工作:
private def update_source(current: String, limit: Int) = {
val results = if (current.length == 0) Nil else /* generate list of results */
new JsCmd{def toJsCmd = if(results.nonEmpty) results.mkString("[\"", "\", \"", "\"]") else "[]" }
}
def render = {
val id = "my-autocomplete"
val cb = SHtml.ajaxCall(JsRaw("request"), update_source(_, 4))
val script = Script(new JsCmd{
def toJsCmd = "$(function() {"+
"$(\"#"+id+"\").autocomplete({ "+
"autocomplete: on, "+
"source: function(request, response) {"+
"response("+cb._2.toJsCmd + ");" +
"}"+
"})});"
})
<head><script charset="utf-8"> {script} </script></head> ++
<span id={id}> {SHtml.ajaxText(init, s=>{ /*set cell to value s*/; Noop}) } </span>
}
所以我的想法是:
- 通過一個
SHtml.ajaxText
場獲得所選擇的結果是將被包裹到自動填充字段中 - 以使用javascript函數更新自動填充建議
嗨,不幸的是我不能使用電梯2.5。我在提升2.4 M4。但是,從我已經使用的看來,在2.4中已經實現了回調。感謝您的回答。 – 2012-04-09 10:13:55
我更新了我的問題,我現在被阻擋的時候,任何建議都是值得歡迎的。 – 2012-04-09 10:23:16
當你說回調不起作用時,我不確定你的意思。 update_source是否被執行?如果是這樣,你的問題可能與你的回報。您正在進行異步調用,因此只返回JSON是不夠的,瀏覽器不知道如何處理它。您需要返回執行操作的JsCmd,並且該操作的結果應該是JQuery UI自動完成的人口。 – 2012-04-09 15:34:10