我刚刚开始使用lift,我现在正在尝试将普通表单更改为ajax 表单,但方法processEntryAdd
永远不会被调用。
def addUser(xhtml : Group) : NodeSeq = {
var firstName = ""
var lastName = ""
def processEntryAdd() {
Log.info("processEntryAdd: " + firstName + ", " + lastName)
}
SHtml.ajaxForm(
bind("entry", xhtml,
"firstName" -> SHtml.text(firstName,
(x) => {
Log.info("Setting firstName to " + x);
firstName = x
}),
"lastName" -> SHtml.text(lastName,
(x) => {
Log.info("Setting lastName to " + x);
lastName = x
}),
"submit" -> SHtml.submit("Add user", processEntryAdd),
))
}
任何想法如何实现我想要做的事情,或者为什么上面的代码不起作用。
按下按钮时提交两个表单域的值和两个局部变量
firstName
和 lastName
已设置但未调用与 SHtml.submit 关联的函数。谢谢!
最佳答案
这个问题有点老了,但我最近需要自己知道这一点,这是迄今为止我见过的最好的解决方案:
ajaxForm(
bind("entry", xhtml,
"firstName" -> text(firstName, firstName = _),
"lastName" -> text(lastName, lastName = _),
"submit" -> submit("Add user", processEntryAdd _),
) ++ hidden(processEntryAdd _)
)
通过将处理添加到隐藏的表单元素,您可以保留提交按钮,而无需更改任何 View 代码。
您可以通过让 processEntryAdd() 返回 JsCmd 来添加客户端行为:
def processEntryAdd() {
Log.info("processEntryAdd: " + firstName + ", " + lastName)
JsRaw("alert('process entry added')")
}
关于ajax - Scala提升框架,提交多个值的ajax表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/760097/