我有一个表单,其中包含两部手机的各种电话信息,其中包括两个与我的操作类中的 bool 值相对应的复选框。如果用户输入两个相同的电话号码,下面的 JavaScript 将自动设置第二个复选框。
if(phone1 != '' && phone1==phone2)
{
document.getElementById("phone2Type").value = document.getElementById("phone1Type").value;
document.getElementById("phone2Text").value = document.getElementById("phone1Text").value;
document.getElementById("phone2Text").checked = document.getElementById("phone1Text").checked;
if( phone2Type=='CELL' && document.getElementById('phone2Text') != null)
{
document.getElementById('phone2Text').disabled=true;
}
document.getElementById("phone2Type").disabled=true;
}
以及与之配套的 jspx 代码:
<s:checkbox id="phone1Text"
onclick="javascript:enableTextingBox()" cssClass="phoneText"
name="phoneInfo.phone1.textOptionSelected" fieldValue="true"
value="phoneInfo.phone1.textOptionSelected"
disabled="%{!phoneInfo.phone1.textOptionEnabled || inputFieldDisabled}" />
<s:checkbox id="phone2Text"
onclick="javascript:enableTextingBox()" cssClass="phoneText"
name="phoneInfo.phone2.textOptionSelected" fieldValue="true"
value="phoneInfo.phone2.textOptionSelected"
disabled="%{!phoneInfo.phone2.textOptionEnabled || inputFieldDisabled}" />
我看到的问题是,当我使用 javascript 将 phone2Text
设置为 phone1Text
时,相应的 bool 值 (phoneInfo.phone2.textOptionSelected
) >) 尚未设置。我很困惑,因为当我忘记 javascript 并手动选中该框时,上面的 jspx 可以正常工作。
查看 post 方法中发送的参数,我看到的是:
_checkbox_phoneInfo.phone2.textOptionSelected: "true"
我期望看到的是:
phoneInfo.phone2.textOptionSelected: "true"
我不确定这是 Struts2 问题还是我不熟悉的某些 javascript 特性。
最佳答案
亚历山大 M 说得完全正确。
这是导致我出现问题的行:
document.getElementById('phone2Text').disabled=true;
禁用文本框会导致其值无法在 POST 操作中发送。
关于javascript - Struts2 页面未从复选框返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26019675/