如何使用提升网获取自动填充文本框值

时间:2013-03-19 07:37:28

标签: scala lift

我正在使用Lift web框架。

我正在实现一个自动完成的文本框。当我在框中输入一些值时,会打开一个下拉列表。如果我从该列表中选择一个值,那么我才能访问文本框的值。如果我自己写一个值,那么我得到一个空值。

我的代码:

var friend_name=""
"#bdayReminder" #> AutoComplete("",
        getAllName _,
        value => takeAction(value),
        List("minChars" -> "3"))


  private def takeAction(str: String) {
    friend_name = str

  }

请建议解决方案

1 个答案:

答案 0 :(得分:2)

免责声明:我是以下图书馆的作者。

我认为lift-combobox可以达到您想要的效果,因为它具有让用户即时创建价值的功能。它使用select2 jQuery插件,因此您可以在下拉菜单中获得漂亮的外观。

例如,如果您需要获取用户创建的值,它将简单地如下所示,请注意我们通常使用Option[T]来表示可能不会显示该值,例如,用户可能不会完全选择了drop-menu中的任何项目:

var friend_name: Option[String] = None
val friendsMenu = new ComboBox(
  default = None,
  allowCreate = true
) {

  // This is where you build your combox suggestion
  override def onSearching(term: String): List[ComboItem] = {
    val names = List(
      ComboItem("f1", "Brian"), ComboItem("f2", "Alice"),
      ComboItem("f3", "Luke"), ComboItem("f4", "Smith"),
      ComboItem("f5", "Brandon")
    )

    names.filter(_.text.contains(term))
  }

  override def onItemSelected(selected: Option[ComboItem]): JsCmd = {
    friend_name = selected
    // The returned JsCmd will be executed on client side.
    Alert("You selected:" + selected)
  }

  // What you want to do if user added an item that
  // does not exist when allowCreate = true.
  override def onItemAdded(text: String): JsCmd = {
    friend_name = Some(text)
  }
}

"#bdayReminder" #> friendsMenu.combobox