Liftweb - LiftScreen和ajax

时间:2012-03-12 10:16:20

标签: scala uitextfield lift

我正在尝试使用Liftscreen在ajax中实现表单但是我想使用Ajax,也就是说我希望每当更新字段时都要调用finish函数。通常我使用像SHtml.ajaxText这样的函数来实现这个目标,但我更喜欢使用LiftScreen,因为它已经包含了很多例程。

以下是我正在使用的代码的基本示例

class ScreenTest extends LiftScreen {

  // here are the fields and default values
  val name = field("Name", "")

  // the age has validation rules
  val age = field("Age", 0, minVal(13, "Too Young"))

  def finish() {
    println("-------> Finish function has be called")
    S.notice("Name: "+name)
    S.notice("Age: "+age)
  }
}

因此,无论何时调用字段nameage,我都希望调用finish函数。我更喜欢一般设置,而不是在每个字段中手动调用finish

更新我正在根据某些条件开发搜索引擎,因此我希望每当修改条件时都会更新我的结果。

我已经在Assembla上阅读了关于LiftScreen的文档页面,我还在官方邮件列表上找到了关于ajax on LiftScreen的讨论(如果我在这里找不到任何答案,我会联系)

1 个答案:

答案 0 :(得分:1)

我会尝试在你用于屏幕的模板中添加一个小的javascript(向导全部?)。例如:

jQuery('input').change(function() {
    jQuery('#idOfForm').submit();
});

不确定是否可以从LiftScreen片段添加此类脚本。

修改 另一种方法是使用维基here中描述的自定义字段。我想你可以做一些事情:

object AjaxifiedScreen extends LiftScreen { 
  val name = new Field { 
    type ValueType = String 
    override def name = "name" 
    override implicit def manifest = buildIt[String] 
    override def default = "" 
    override def toForm: Box[NodeSeq] = SHtml.ajaxText(is, doStuff(_)) 
  } 
}