Динамически добавлять клиентскую часть textareas к форме в лифте - PullRequest
2 голосов
/ 13 ноября 2011

У меня есть форма на основе образца в http://simply.liftweb.net/index-4.2.html#toc-Section-4.2, и мне было интересно, есть ли способ иметь кнопку на странице, которая бы добавляла текстовую область при каждом нажатии, а затем в лифте код получить его в виде массива строк.

То, что я изображаю, выглядит примерно так:

<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» #> SHtml.onSubmit (comments = _)

Какой лучший способ заставить этот код работать?

Ответы [ 2 ]

0 голосов
/ 22 июля 2012

Здесь я опишу, как вы можете добавить любое количество полей (у меня есть текстовая область и «связанное» числовое поле.

Вы добавляете их с помощью jQuery, а затем Lift получает все данные в виде объекта json.

Динамическое добавление полей в приложение Lift

0 голосов
/ 13 ноября 2011

за добавление:

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

для добавления:

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