2

リフトフレームワークでフォームを処理しようとしています。私のフォームには 1 つのチェックボックスとラジオボタンがあります。チェックボックスがオンになっているかどうか、および選択されたラジオボタンを確認するにはどうすればよいですか。次のコードは、他の要素の値を取得するために使用しました。

景色:

<form class="lift:MySnippet?form=post">
 From:<input type="text" name="source" /><br />
 To:  <input type="text" name="destination" /><br />
 Age: <input type="text" name = "age"/><br />
 Return: <input type="checkbox" name="needreturn" value="Return Ticket" /><br />
 <input type="radio" name="sex" value="male" />Male<br />
 <input type="radio" name="sex" value="male" />Female<br />
 <input type="submit" value="Book Ticket"/>
</form>

MySnippet のスカラ コードは次のとおりです。

  object MySnippet {
     def render = {
             var from = ""
             var to = ""
             var age = 0

            def process() {
                S.notice("in process function")
            }

     "name=source" #> SHtml.onSubmit(from = _) &
     "name=destination" #> SHtml.onSubmit(to = _) &
     "name=age" #> SHtml.onSubmit(s => asInt(s).foreach(age = _)) &
     "type=submit" #> SHtml.onSubmitUnit(process)        
   }
  }

これで、チェックボックスとラジオボタンをどのように処理できますか。誰でも私を助けることができます...前もって感謝します。

4

2 に答える 2

1

HTML で選択肢を指定する必要がありますか? そうでない場合、最も簡単な方法は次のとおりです。

Return: <input type="checkbox" name="needreturn" /><br />
Sex: <input type="radio" name="sex" />

および CSS 変換:

val radioChoices = List("male", "female")
var sex:Box[String] = None
var needReturn:Boolean = false

"@sex" #> SHtml.radio(radioChoices, sex, (resp) => sex = Full(resp)) &
"@needreturn" #> SHtml.checkbox(needReturn, (resp) => needReturn = resp)

フォームが送信されたときではなく、値が変更されるたびに選択内容をサーバーに送信する場合は、とSHtml.radioを置き換えることができますSHtml.ajaxRadioSHtml.checkboxSHtml.ajaxCheckbox

SHtml.onSubmit上記のようにチェックボックスとラジオを 使用することもできると思いますが、正確な方法を理解するためにいくつかのテストを行う必要があります.

ラジオ ボタンに関しては、必要に応じて、ラベルの出力方法の変更に関する情報をここで見つけることができます: https://groups.google.com/forum/?fromgroups=#!topic/liftweb/rowpmIDbQAE

于 2013-04-08T22:59:25.970 に答える
1

SHtml.checkbox、_SHtml.radio

ところで、 の<input>-sはずだSHtml.textと思います。つまり、それらはボタンではなく、入力です。firebug を使用して、Web ページの結果の html を確認することを忘れないでください。(削除した現在のコードを使用していることがわかりますinput=text。)

于 2013-04-08T14:01:02.047 に答える