簡體   English   中英

處理已選中和未選中的復選框

[英]Handle checked and unchecked checkbox

我這里的情況非常混亂。

<tr>
    <td>
        <input type="checkbox" id="box1" name="box1" <% if (renderRequest.getPreferences().getValue("box1", null).equals("on")) { %> checked="checked"  <% } %> >
    </td>
    <td><label>Box</label></td>
</tr>

在portlet.xml中,我默認將box1值設置為“ on”。 因此,當我加載edit.jsp頁面時,我看到了選中的值。 現在,我想處理令我感到困惑的未選中復選框的情況。 當我取消選中該復選框時,提交的值為null,我很困惑以應對這種情況。 如果未選中此復選框,則如何提交默認值。

盡管這個問題是3年前提出的,但我為將來的觀眾添加了一個答案。

如果未選中此復選框,則不會發送該復選框。 因此devang將其值設置為“ on / off”(如果未選中)的答案無濟於事-它始終返回NULL。

我發現最簡單的解決方案是添加一個隱藏字段,該字段的名稱與未選中復選框時將使用的名稱相同。

例如,在您的代碼中,一個解決方案可能是

<tr>
    <td>
        <input type="checkbox" id="box1" name="box1" value="1" <% if (renderRequest.getPreferences().getValue("box1", null).equals("on")) { %> checked="checked"  <% } %> >
    </td>
    <td>
        <input type="checkbox" id="box1_hidden" name="box1" value="0" >
    </td>
</tr>

上面的代碼取決於服務器對參數的處理,因為瀏覽器將發送這兩個參數。 如果未選中此復選框,則隱藏字段的值將按原樣使用(因為瀏覽器不會發送null參數)。 但是,如果選中此復選框,則事情變得很麻煩,因為現在瀏覽器會看到兩個對應於相同名稱字段的值。

例如,Java僅提供具有特定名稱的字段的第一個值。 另一方面,PHP將最后一個值用作要使用的值。

因此,您需要執行一個額外的步驟並調用JavaScript。 這個想法是基於檢查的條件禁用隱藏的輸入。

if(document.getElementById("box1").checked) {
     document.getElementById('box1_hidden').disabled = true;
}

無論服務器如何處理,這都構成了完整的解決方案。

據我記得,添加value屬性並將其設置為所需的值應該可以工作。 在下面,添加value="on"

<input type="checkbox" id="box1" name="box1" value="on" 
  <% if (renderRequest.getPreferences().getValue("box1", null).equals("on")) { %>    
    checked="checked"  
  <% } %> >

使用剃刀語法:

<input type="checkbox" name="xxx" value="xxx" @if(condition == true) {<text>checked="checked"</Text>}>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM