我正在尝试使用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
。
更新我正在根据某些条件开发搜索引擎,因此我希望每当修改条件时都会更新我的结果。
我已经在Assembla上阅读了关于LiftScreen的文档页面,我还在官方邮件列表上找到了关于ajax on LiftScreen的讨论(如果我在这里找不到任何答案,我会联系)
答案 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(_))
}
}