表单提交后,复选框将恢复为旧值

时间:2014-02-24 18:12:23

标签: javascript forms web-applications checkbox

我的表单在会话范围内运行。

我的表单中有两个复选框,默认情况下会选中它们。但是,当我取消选中复选框并提交表单时,复选框将恢复为已检查状态。

可能导致这种情况的原因是什么?任何暗示修复这一点将不胜感激。

供参考: 的   如果我将表单范围从会话更改为请求,则复选框似乎也运行正常。

<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>

1 个答案:

答案 0 :(得分: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
}