我有一个jsp,其中一些单选按钮和文本框依赖于下拉选择
这是我的jsp和javascript代码。
JSP
<s:form action="crInquiry" name="form">
<s:select name="filterValue" list="headerList"
onchange="OnChange(this.form.filterValue);" />
<s:radio name="filter" list="#{'STATUS_FILTER_START':'START','STATUS_FILTER_END':'STOP'}"
label="Stage"></s:radio>
<s:textfield disabled="true" value="0" name="count" theme="css_xhtml"></s:textfield>
<s:radio name="ascOrder" list="#{'ASC':'ASC','DESC':'DESC'}"></s:radio>
<s:submit value="Filter" onclick="gotopage('FilteredInquiryLog')"></s:submit>
<s:submitvalue="Details" onclick="gotopage('crInquiry')"></s:submit>
</s:form>
javascript
<script type="text/javascript">
function OnChange(dropdown) {
var myindex = dropdown.selectedIndex;
document.form.filter[0].disabled = false;
document.form.filter[1].disabled = false;
if (myindex == 8) {
alert("8");
document.form.filter[0].disabled = true;
document.form.filter[1].disabled = true;
document.form.count.disabled = false;
document.form.submit.disabled = false;
}
else if (myindex == 9) {
alert("9");
document.form.filter[0].disabled = true;
document.form.filter[1].disabled = true;
document.form.count.disabled = true;
document.form.submit.disabled = false;
}
else{
document.form.filter[0].disabled = false;
document.form.filter[1].disabled = false;
document.form.count.disabled = true;
document.form.submit.disabled = false;
}
}
function gotopage(actionname)
{
document.form.action=actionname+".action";
document.form.submit();
}
</script>
问题是当我在下拉列表中选择一个项目时,请说明元素号。 8或9所以通过javascript单选按钮应该禁用两个和textfield和单选按钮9。 当我选择一个项目时,它完全禁用了相关的辐射按钮或文本字段,但是当我提交时,它会显示启用单选按钮,因为我来到同一个jsp。 我的javascript中有什么问题?
答案 0 :(得分:2)
您还应该在页面onload事件上检查您的下拉列表值。
像这样的东西
<script type="text/javascript">
/**
* This function will be called twice - once on onChage event, and once on onLoad event
*/
function OnChange() {
dropdown = document.getElementById('myDropDown');
var myindex = dropdown.selectedIndex;
document.form.filter[0].disabled = false;
document.form.filter[1].disabled = false;
if (myindex == 8) {
document.form.filter[0].disabled = true;
document.form.filter[1].disabled = true;
document.form.count.disabled = false;
document.form.submit.disabled = false;
}
else if (myindex == 9) {
document.form.filter[0].disabled = true;
document.form.filter[1].disabled = true;
document.form.count.disabled = true;
document.form.submit.disabled = false;
}
else{
document.form.filter[0].disabled = false;
document.form.filter[1].disabled = false;
document.form.count.disabled = true;
document.form.submit.disabled = false;
}
}
function gotopage(actionname)
{
document.form.action=actionname+".action";
document.form.submit();
}
</script>
<body onload="OnChange()">
<s:form action="crInquiry" name="form">
<s:select name="filterValue" list="headerList" id="myDropDown"
onchange="OnChange();" />
<s:radio name="filter" list="#{'STATUS_FILTER_START':'START','STATUS_FILTER_END':'STOP'}"
label="Stage"></s:radio>
<s:textfield disabled="true" value="0" name="count" theme="css_xhtml"></s:textfield>
<s:radio name="ascOrder" list="#{'ASC':'ASC','DESC':'DESC'}"></s:radio>
<s:submit value="Filter" onclick="gotopage('FilteredInquiryLog')"></s:submit>
<s:submitvalue="Details" onclick="gotopage('crInquiry')"></s:submit>
</s:form>
答案 1 :(得分:1)
如果我正确理解您的问题,我认为您的Javascript没有问题 由于提交前和提交后页面数据之间没有通信,因此会产生问题。
您可以通过以下方式之一克服此问题。 1.在身体的“OnLoad”事件上调用你的javascript,它对你也一样 2.将页面的当前状态存储在某个控件(例如文本字段)中,并将其与页面的其他数据一起提交。在加载时(可能是onLoad或JSP页面的末尾),您可以使用该字段中的值恢复状态。
我希望这对你有用。