急急急!请教点JS的问题。
我是想通过一个dropdownlist来控制2个checkbox的enabled的属性。
但是我怎么试也没用。麻烦大虾帮我看看。谢谢了。。。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
<!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 runat="server">
<title>无标题页</title>
<script language="javascript" type="text/javascript">
function setEnabled(ddlCommend)
{
//alert(ddlCommend);
if(ddlCommend.selectedIndex==1)
{
var chk1= document.getElementById("chkSelect1");
var chk2= document.getElementById("chkSelect2");
//alert(chk1.checked);
chk1.disabled=true;
chk2.disabled=true;
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="ddlCommend" runat="server" >
<asp:ListItem Value="0">不推荐</asp:ListItem>
<asp:ListItem Value="1">推荐</asp:ListItem>
</asp:DropDownList>
<asp:CheckBox ID="chkSelect1" runat="server" Text="国家局项目" Enabled="false" />
<asp:CheckBox ID="chkSelect2" runat="server" Text="省局项目" Enabled="false"/>
</div>
</form>
</body>
</html>
这个是页面代码。
后台代码就一句话
protected void Page_Load(object sender, EventArgs e)
{
this.ddlCommend.Attributes.Add("onchange", "setEnabled(this)");
}
麻烦了。谢谢。
[解决办法]
var chk1= document.getElementById("chkSelect1");
var chk2= document.getElementById("chkSelect2");
//alert(chk1.checked);
chk1.disabled=true;
chk2.disabled=true;
这里我觉得有问题..一个var类型的有属性disabled吗
?
你在看看吧..
[解决办法]
Hi, you can like this:
<!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 id="Head1" runat="server">
<title>无标题页 </title>
<script type="text/javascript">
function OnRadioButtonListSelectChange(evt)
{
var input;
if(window.event != null)
input = event.srcElement;
else
input = evt.target;
if(input.value == 1)
SetCheckBoxListState(true);
else
SetCheckBoxListState(false);
}
function SetCheckBoxListState(enabled)
{
var oCBList = document.getElementById("<%=CheckBoxList1.ClientID%>");
var inputs = oCBList.getElementsByTagName("input");
for(var i = 0; i < inputs.length; i++)
{
if(inputs[i].type == "checkbox")
{
inputs[i].checked = false;
inputs[i].disabled = enabled;
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="ddlCommend" runat="server" onclick="OnRadioButtonListSelectChange(event)">
<asp:ListItem Value="0">不推荐 </asp:ListItem>
<asp:ListItem Value="1">推荐 </asp:ListItem>
</asp:DropDownList>
<asp:CheckBoxList ID="CheckBoxList1" runat="server" Width="190px">
<asp:ListItem>国家局项目</asp:ListItem>
<asp:ListItem>省局项目</asp:ListItem>
</asp:CheckBoxList>
</div>
</form>
</body>
</html>
[解决办法]
在page_load的时候,加上这两句代码,为span加上id
chkSelect1.Attributes.Add("id", "chkSelect1_1");
chkSelect2.Attributes.Add("id", "chkSelect2_2");
因为在浏览器解析过后,会在checkbox外套上一个span,而且span的disabled也是true。
JS:
function setEnabled(ddlCommend)
{
if(ddlCommend.selectedIndex==1)
{
document.getElementById("chkSelect1").disabled=false;
document.getElementById("chkSelect2").disabled=false;
document.getElementById("chkSelect1_1").disabled=false;
document.getElementById("chkSelect2_2").disabled=false;
}
}
这里disabled的值要设为false,设为ture的话反而是让它保持那种灰色的状态了。
[解决办法]
if(ddlCommend.selectedIndex==1)
{
var chk1= document.getElementById("chkSelect1");
var chk2= document.getElementById("chkSelect2");
//alert(chk1.checked);
chk1.disabled=true;
chk2.disabled=true;
}
改为
if(ddlCommend.options[ddlCommend.selectedIndex].text=="1")
{
var chk1= document.getElementById("chkSelect1");
var chk2= document.getElementById("chkSelect2");
//alert(chk1.checked);
chk1.disabled=true;
chk2.disabled=true;
}