私はajaxでオートコンプリートを使いたいと思います。テキストフィールドにユーザーが何かは、サーバが提供するいくつかの提案が表示されたらLift - 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.4M4です。しかし、私がすでに使ったことから、すでに2.4で実装されているコールバックがあるようです。ご回答有難うございます。 –
私が今ブロックされている瞬間に自分の質問を更新しましたが、提案は大歓迎です。 –
コールバックが機能しないと言ったときに何を意味するのか分かりません。 update_sourceは実行されていますか?もしそうなら、あなたの問題はあなたの利益につながる可能性があります。あなたは非同期呼び出しを行っているので、JSONだけを返すだけでは不十分です。ブラウザはその処理方法を知らないでしょう。アクションを実行するJsCmdを返す必要があります。そのアクションの結果は、JQuery UIオートコンプリートの人口である必要があります。 –