Я хотел бы использовать автозаполнение с помощью ajax. Итак, мой цель состоит в том, чтобы:
Когда пользователь вводит что-то в текстовое поле, появляются некоторые предложения, предоставленные сервером (мне нужно найти предложения в базе данных)
Когда пользователь нажимает «ввод», щелкает где-то еще, чем в поле автозаполнения или когда он/она выбирает предложение, строка в текстовом поле отправляется на сервер.
Сначала я попытался использовать виджет автозаполнения, предоставленный лифтом, но столкнулся с тремя проблемами:
WiringUI
он вызывает ошибки.Итак, мой вопрос: как я могу совместить автозаполнение jqueryи взаимодействовать с сервером в лифте.Я думаю, что я должен использовать некоторые обратные вызовы, но я не осваиваю их.
Заранее спасибо.
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 + ");" +
"}"+
"})});"
})
++
{SHtml.ajaxText(init, s=>{ /*set cell to value s*/; Noop}) }
}
Итак, моя идея заключалась в следующем:
SHtml.ajaxText
который будет заключен в поле автозаполнения