我想使用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