Scala Liftweb-LiftScreen和ajax

Scala Liftweb-LiftScreen和ajax,scala,uitextfield,lift,Scala,Uitextfield,Lift,我试图使用Liftscreen在ajax中实现一个表单,但我想使用ajax,也就是说,我希望在更新字段时调用finish函数。通常我使用像SHtml.ajaxText这样的函数来实现这个目标,但我更喜欢使用LiftScreen,因为它已经包含了很多例程 下面是我正在使用的代码的一个基本示例 class ScreenTest extends LiftScreen { // here are the fields and default values val name = field("N

我试图使用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)
  }
}
因此,我希望在调用字段
name
age
时调用finish函数。我更喜欢常规设置,而不是在每个字段中手动调用
finish

更新我在搜索引擎上工作,这取决于某些条件,因此我希望在修改条件时更新我的结果


我已经在上阅读了关于LiftScreen的文档页面,并且在官方邮件列表中也找到了关于LiftScreen的讨论(如果在这里找不到任何答案,我将联系该邮件列表)

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

jQuery('input').change(function() {
    jQuery('#idOfForm').submit();
});
不确定是否可以从LiftScreen代码段添加这样的脚本

编辑 另一种方法是使用wiki中描述的自定义字段。我认为你可以做一些如下的事情:

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(_)) 
  } 
}

你说的“被叫”是什么意思?这是焦点吗?@Lukasz我的意思是我希望函数finish()在修改name或age时打印name和age。我在搜索引擎上工作,这取决于一些条件,因此我希望在条件被修改时更新我的结果。是的,但我正在寻找一个已经在LiftScreen中实现的更全局的解决方案,但是如果它不存在,我将不得不使用此方法。编辑答案。我相信使用ajaxText可以让它与onblur事件一起工作。这实际上更接近我的愿景,我希望它存在“默认”行为,但似乎不是这样,我将使用它,非常感谢您的帮助。