我知道我可以运行以这种方式提交ajaxText的脚本:
SHtml.ajaxText(myVar, (str) => myVar = str, "onsubmit" -> "myScript();")
我想要做的是改为执行scala方法。
显然
SHtml.ajaxText(myVar, (str) => myVar = str, "onsubmit" -> myMethod)
无效。
我有办法做到这一点吗?
答案 0 :(得分:2)
您的回答对我来说很好,但如果您在执行后不想要任何事情发生,那么您不必让JsCmd
做任何事情。例如:
SHtml.ajaxText(myVar, (str) => {
myVar = str
myMethod()
JsCmds.Noop
})
JsCmds.Noop
与普通JavaScript中发布return
几乎相同,因此函数返回时不做任何事情。为简洁起见,我将代码块内联,但您也可以使用(str) => f(str)
执行操作并让方法返回JsCmds.Noop
。
答案 1 :(得分:1)
我找到了办法,但不是那么干净。
因为函数(str) => myVar = str
也在提交时执行,这就是我所做的:
def f(str:String):JsCmd = {
myVar = str
myMethod()
SetHtml("msg_div",<span> method executed </span>)
}
SHtml.ajaxText(myVar, (str) => f(str))
这样每次我在ajaxText myMethod
中提交修改时都会执行,但我不得不从JsCmd
函数返回一些f
。
如果您找到更好的方法,请告诉我。