现有页面上有三个控件,其中两个下拉列表(checkitem,rule),一个文本框(value):<html:select property="checkitem" styleClass="form_select_on" onchange="changeEditStatus(this.value);">
...
</html:select>
<html:select property="rule" styleClass="form_select_on">
...
</html:select>
<html:text styleClass="form_input_1x" property="value" />我要达到的目的是,当下拉列表checkitem的选项被改变时,触发onchange事件,
根据checkitem的选项值value来设置rule及value为可用或是不可用。
我写的js代码如下:
function changeEditStatus(selectValue){ switch(parseInt(selectValue)){
//checkitem为2、3、4、5、8时将rule和value设置为不可用 case 2:
case 3:
case 4:
case 5:
case 8:
document.getElementsByName("rule").disabled=true; //for debug
alert(document.getElementsByName("rule").disabled); document.getElementByName("value").disabled=true;
break;
default:
alert("disabled=false");
document.getElementByName("rule").disabled=false;
document.getElementByName("value").disabled=false;
break;
}
}调试的时候,我从下拉列表checkitem中选择第二项,alert语句输出值为 true,
但是下拉列表rule以及文本框value依然可用。
我试过在这段JS代码中不做判断,直接将rule和value设置为不可用,依然没有效果。还请高手指点如何来设置可用和不可用属性,应该不需要刷新页面吧?
...
</html:select>
<html:select property="rule" styleClass="form_select_on">
...
</html:select>
<html:text styleClass="form_input_1x" property="value" />我要达到的目的是,当下拉列表checkitem的选项被改变时,触发onchange事件,
根据checkitem的选项值value来设置rule及value为可用或是不可用。
我写的js代码如下:
function changeEditStatus(selectValue){ switch(parseInt(selectValue)){
//checkitem为2、3、4、5、8时将rule和value设置为不可用 case 2:
case 3:
case 4:
case 5:
case 8:
document.getElementsByName("rule").disabled=true; //for debug
alert(document.getElementsByName("rule").disabled); document.getElementByName("value").disabled=true;
break;
default:
alert("disabled=false");
document.getElementByName("rule").disabled=false;
document.getElementByName("value").disabled=false;
break;
}
}调试的时候,我从下拉列表checkitem中选择第二项,alert语句输出值为 true,
但是下拉列表rule以及文本框value依然可用。
我试过在这段JS代码中不做判断,直接将rule和value设置为不可用,依然没有效果。还请高手指点如何来设置可用和不可用属性,应该不需要刷新页面吧?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
</head> <body>
<select id="checkitem" onchange="changeEditStatus(this.value);">
<option value="-1">请选择</option>
<option value="1">1 不可用</option>
<option value="2">2</option>
<option value="3">3 不可用</option>
</select>
<select id="rule">
<option value="-1">请选择</option>
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
</select>
<input type="text" id="value" />
<script type="text/javascript">
<!--
$ = document.getElementById;function changeEditStatus(selValue)
{
switch(parseInt(selValue))
{
case 1:
case 3:
$("rule").disabled = true;
$("value").disabled = true;
break;
default:
$("rule").disabled = false;
$("value").disabled = false;
break;
}
}
//-->
</script>
</body>
</html>
L@_@K
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
</head> <body>
<select id="checkitem" onchange="changeEditStatus(this.value);">
<option value="-1">请选择</option>
<option value="1">1 不可用</option>
<option value="2">2</option>
<option value="3">3 不可用</option>
</select>
<select id="rule">
<option value="-1">请选择</option>
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
</select>
<input type="text" id="value" />
<script type="text/javascript">
<!--
$ = document.getElementsByName;function changeEditStatus(selValue)
{
switch(parseInt(selValue))
{
case 1:
case 3:
$("rule")[0].disabled = true;
$("value")[0].disabled = true;
break;
default:
$("rule")[0].disabled = false;
$("value")[0].disabled = false;
break;
}
}
//-->
</script>
</body>
</html>
输出为1
感觉structs控件写JS代码响应比较麻烦。。
试过鸟,
document.getElementsByName("rule")[0].disabled=true;
成功将rule下拉列表设置为不可用了,但是我再选择checkitem中其他对应为“可用”的选项,rule下拉列表没有反应,还是在不可用状态。另外,
document.getElementByName("value")[0].disabled=true;
直接没有任何效果。
试过鸟,
document.getElementsByName("rule")[0].disabled=true;
成功将rule下拉列表设置为不可用了,但是我再选择checkitem中其他对应为“可用”的选项,rule下拉列表没有反应,还是在不可用状态。另外,
document.getElementByName("value")[0].disabled=true;
直接没有任何效果。
试过鸟,
document.getElementsByName("rule")[0].disabled=true;
可以将下拉列表rule设置为不可用,但是当我再从下拉列表checkitem中选择对应为“可用”的选项时,rule没有做出响应,还是不可用状态。而
document.getElementByName("value")[0].disabled=true;
没有反应,文本框value一直处于可用状态
这个问题已经解决了,
getElementsByName我给写成了getElementByName,杯具
工作的项目中暂时没有到jQuery以后可能会用到吧~