我有一个表单,其中包含两部手机的各种电话信息,包括两个复选框,对应于我的操作类中的布尔值。如果用户输入两个相同的电话号码,则以下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
时,相应的布尔值(phoneInfo.phone2.textOptionSelected
)未设置。我很困惑,因为当我忘记了javascript并手动选中框时,上面的jspx工作正常。
查看post方法中发送的参数,我看到了:
_checkbox_phoneInfo.phone2.textOptionSelected: "true"
我期望看到的是:
phoneInfo.phone2.textOptionSelected: "true"
我不确定这是Struts2问题还是我不熟悉的一些javascript特性。
答案 0 :(得分:1)
Aleksandr M完全正确。
这是导致我的问题的一行:
document.getElementById('phone2Text').disabled=true;
禁用文本框会导致其值不在POST操作中发送。