2014-02-24 54 views
0

我的表單在會話範圍中運行。表格提交後複選框恢復爲舊值

我在表格中有兩個複選框,並且它們在默認情況下被選中。但是,當我取消選中複選框並提交表單時,複選框將恢復爲選中狀態。

這可能是什麼原因造成的?任何提示修復這將不勝感激。

FYI: 如果我改變我的形式從範圍會議上要求,複選框似乎過於操作的罰款。

<div class="checkbox_item"> 
    <label> 
     <input id="member" name="member" type="checkbox" checked="checked" value="Y" ></input>  
     Member  
    </label> 
</div> 

<div class="checkbox_item"> 
    <label> 
     <input id="candidate" name="candidate" type="checkbox" checked="checked" value="Y" ></input>  
     Candidate  
    </label> 
</div> 

在表單提交給servlet之前,我檢查了下面的複選框的值,它總是顯示「Y」。

alert("member: " + $("#member").val() + " candidate: " + $("#candidate").val()); 

編輯:

我使用Struts 1

方法呈現形式:

public ActionForward renderForm(ActionMapping actionMapping, 
     ActionForm form, HttpServletRequest req, 
     HttpServletResponse res) throws Exception { 
    MyForm myForm = (MyForm) form; 

    myForm.set("member", "Y"); 
    myForm.set("candidate", "Y"); 

    return actionMapping.findForward("success"); 
} 

方法時提交表單被稱爲:

public ActionForward search(
     ActionMapping actionMapping, ActionForm form, 
     HttpServletRequest req, 
     HttpServletResponse res) throws Exception { 

    MyForm myForm = (MyForm) form; 
    List<MyObject> list = service.search(myForm); 
    myForm.setMyList(list); 
    return actionMapping.findForward("success"); 
} 

我的JSP形式:

<form name="myForm" action="myLink.do" method="post" onsubmit="return clickSearchButton()">  
    <label> 
     <div class="checkbox_item">    
      <label> 
       <html:checkbox name="myForm" styleId="member" property="member" value="Y"/> 
       Member 
      </label> 
     </div> 
     <div class="checkbox_item"> 
      <label> 
       <html:checkbox name="myForm" styleId="candidate" property="candidate" value="Y"/> 
       Candidate 
      </label> 
     </div> 
    </label> 
    <input type="submit" title="Search" /> 

</form> 
+0

你確定你的後臺是不是設置爲'checked'頁面加載時?我看到......'checked =「checked」'在你的html – Vikram

+1

$(「#member」)。val()總是顯示在這種狀態下被選中。我認爲你需要檢查發佈數據,看看是否包含該字段。因爲.val()將始終返回值。如果複選框未選中,則該值不會包含在POST數據中。 –

+0

@Vikram最初,當我進入該頁面時,我將它們設置爲從後端進行檢查。但是一旦在這個頁面上,我就沒有設置任何東西。從我的「alert」聲明中可以看出,該值甚至在到達後端之前似乎總是「Y」。 – Susie

回答

1

這是否對你的工作? 提交表單時,只有「on」複選框控件可以成功。 在你的後臺,你只需要評估複選框的存在 http://www.w3.org/TR/html401/interact/forms.html

if(null != myForm.get("member") && myForm.get("member")){// check if checkbox was checked/unchecked 
    myForm.set("member","Y"); // use your business logic to set/unset this field accordingly 
} 
+0

這是我所要做的。我必須像你所建議的那樣手動設置「成員」和「候選人」的值。但爲什麼它不會自動發生?我的表單類中有「成員」和「候選人」變量。 – Susie

+0

哦,我的壞...我的理解是,如果你不選中複選框..ActionForm不會在'POST'動作中包含該字段。我碰到這個帖子:http://stackoverflow.com/a/16866448/405117這可能是有用的。它建議您必須將默認值設置爲「false」..我寧願不使用複選框的「value」屬性來評估它是否被選中/取消選中。 – Vikram