动态地将textareas客户端添加到电梯中的表单

时间:2011-11-13 15:09:51

标签: scala lift

我根据http://simply.liftweb.net/index-4.2.html#toc-Section-4.2中的示例获得了一个表单,我想知道是否有一种方法可以在页面上设置一个按钮,每次单击时都会添加一个textarea,然后在电梯代码中把它作为一个字符串数组。

我想象的是这样的事情:

<form class="lift:OnSubmit?form=post">
  Name: <input name="name"><br>
  Age: <input name="age" value="0"><br>
<span id="somecomments"></span>
<input type="button" onclick="$('#somecomments').append($('<textarea cols=80 rows=10 name=comments>'))" value="Add Comment"/>
  <input type="submit" value="Submit">
</form>

//in scala:
object OnSubmit {
  def render = {
    var name = ""
    var age = 0
    var comments = List("")​
    def process() {
        S.notice("Name: "+name)
        S.notice("Age: "+age)
        S.notice(comments)
        S.redirectTo("/")
      }
    }​
    "name=name" #> SHtml.onSubmit(name = _) &
    "name=age" #> SHtml.onSubmit(s => asInt(s).foreach(age = _)) &
    "name=comments" #> SHtml.onSubmit(comments = _) &
    "type=submit" #> SHtml.onSubmitUnit(process)
  }
}

但是我得到编译错误,注释字段是一个字符串,所以我不能将它分配给带有“name = comments”的列表#&gt; SHtml.onSubmit(comments = _)

使此代码有效的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

用于前置:

"name=comments" #> SHtml.onSubmit(comments ::= _)

追加:

"name=comments" #> SHtml.onSubmit(comments :+= _)

答案 1 :(得分:0)

这里我将介绍如何添加任意数量的字段(我有一个textarea和一个“相关的”数字字段。

使用jQuery添加它们,然后Lift将所有数据作为json对象获取。

Dynamically adding fields to a Lift application