首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

急请问点JS的有关问题

2012-02-23 
急急急!请教点JS的问题。我是想通过一个dropdownlist来控制2个checkbox的enabled的属性。但是我怎么试也没用

急急急!请教点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; 
}

热点排行