2011-11-13 15 views
2

サンプルに基づいたフォームが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) 
    } 
} 

しかし、私はコメント欄にはので、私は「名前=コメント」でリストに割り当てることができない文字列であることをコンパイルエラーを取得します#> SHtml.onSubmit(comments = _)

このコードを動作させる最も良い方法は何ですか?

+0

これを行う方法を理解しましたか?私は "正しい方法"を探しています。同じことをやって、それを行うための非ハックリなリフトのような方法を見つけ出すのに苦労しています。 –

答えて

0

は前に付けるために:

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

を追加するために:

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

「コメント」という名前の複数のテキストエリアを持つようにHTMLを変更すると機能しますが、javascriptによって動的に追加されるフィールドでは機能しません。ボタンを何度も押して、新しいテキストエリアをすべて追加したいと思っています。 – user1043466

+0

ああ、申し訳ありませんが、私はコンパイルエラーの部分にしか答えませんでした。 – Debilski

0

をここで私は、私はテキストエリアと「関連」数値フィールドを持っている(あなたは、任意の数のフィールドを追加する方法について説明し

jQueryを使用してそれらを追加し、すべてのデータをjsonオブジェクトとして取得します。

Dynamically adding fields to a Lift application

関連する問題