2013-04-08 109 views
2

我正在嘗試處理電梯框架工作中的窗體。我的表單有一個複選框和單選按鈕。我怎麼能檢查複選框是否被選中和選定的單選按鈕。以下代碼我用於獲取其他元素的值。獲取電梯中的複選框和單選按鈕值

視圖:

<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)   
    } 
    } 
在此

我怎麼能處理的複選框和單選按鈕。任何人都可以提前幫助我... thanx。

回答

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.radioSHtml.ajaxRadioSHtml.checkboxSHtml.ajaxCheckbox如果你希望你的選擇要發送到每一次服務器價值改變,而不是當提交表格

我相信你也可以使用SHtml.onSubmit如上面的複選框和收音機做的,但我必須做一些測試到figu準確地說出如何。 https://groups.google.com/forum/?fromgroups=#!topic/liftweb/rowpmIDbQAE

+0

我試過了。但是如果我選擇複選框,needReturn值不會改變。你能告訴我什麼是resp的意思。 – isc 2013-04-09 07:27:58

+0

'resp'就是我給變量的名字(響應的簡稱)。它只是一個函數,只需要一個參數,並返回「Unit」。與您在示例中使用's'類似,或等同於'needReturn = _'。 – jcern 2013-04-09 07:45:17

+0

所以我們將這個響應保存在needReturn變量中。但爲什麼它沒有得到確切的結果。如果我檢查複選框也顯示錯誤的值(我只是打印它使用S.notice)。 – isc 2013-04-09 07:49:47

1

使用SHtml.checkboxSHtml.radio

順便說一句,在<input>-s應該是SHtml.text,我想。所以,他們不是按鈕 - 他們是輸入。不要忘記用螢火蟲檢查網頁中產生的HTML。 (您會看到使用當前代碼刪除了input=text。)

+0

你能幫助我通過展示一個example..because我注意到SHTML:

至於單選按鈕,如果你需要,你可以找到有關更改標籤是這裏輸出的方式的一些信息。 checkBox函數之前..但它的多個..所以哪一個我應該..並且我不明白的參數.. – isc 2013-04-08 14:19:43

+0

有一個演示應用程序在這裏: http://demo.liftweb.net/ 基本上,「ajax」方法會在您提交表單之前向您發送用戶輸入的內容。這些方法之間的其他差異可以從方法簽名中看出。通過跳入代碼,如果您使用IDE。 如果您對複選框和ajax一般有疑問 - 您應該閱讀有關html

的一般信息。 – VasyaNovikov 2013-04-08 19:35:10