我在ASP.NET 2005中使用JScript。我有一個帶有複選框和下拉列表的頁面。當複選框被選中時,下拉將被禁用。在頁面回發期間,應保留此行爲。我正在使用如下功能的javascript函數:Javascript禁用ASP.NET中的下拉列表
if((chkOwner[1].checked==true))
{
document.getElementById(ddlClientID).disabled=true;
document.getElementById(ddlClientID).className = "form-disabled";
document.getElementById(ddlClientID).selectedIndex = 0;
}
else
{
document.getElementById(ddlClientID).disabled=false;
document.getElementById(ddlClientID).className = "form-input";
document.getElementById(ddlClientID).selectedIndex = 0;
}
這個效果差不多。但是,回發後不會保留下拉選擇(未選中複選框時)。 [它轉到零指數的值]
解決方案實際上是刪除最後一行,即在else部分中,刪除selectedIndex = 0。
但是,當我這樣做時,禁用下拉式(選中複選框時)在回發後無法使用。
你能幫我解決嗎?
更多信息:我正在使用ClientScript.RegisterStartupScript在每次頁面加載時檢查此內容。
感謝
Lijo
--CODE ----- 下面是什麼,我想。 (這是我創建剛纔一個示例應用程序,這是行不通的。這隻能說明什麼,我想要的目的。)
function ManageInputsFor()
{
if((document.getElementById(chbx).checked==true))
{
document.getElementById(ddlClientID).disabled=true;
document.getElementById(ddlClientID).className = "form-disabled";
document.getElementById(ddlClientID).selectedIndex = 0;
}
else
{
document.getElementById(ddlClientID).disabled=false;
document.getElementById(ddlClientID).className = "form-input";
document.getElementById(ddlClientID).selectedIndex = 0;
}
}
protected void Page_Load(object sender, EventArgs e)
{
ClientScript.RegisterClientScriptBlock(Page.GetType(), "chbx", @"<script language=""javascript"" type=""text/javascript"">var chbx ='" + CheckBox1.ClientID + "'</script>");
ClientScript.RegisterClientScriptBlock(Page.GetType(), "ddl", @"<script language=""javascript"" type=""text/javascript"">var ddlClientID ='" + DropDownList1.ClientID + "'</script>");
ClientScript.RegisterStartupScript(Page.GetType(), "onLoadCallForManageInputs", @"<script language=""javascript"" type=""text/javascript"">ManageInputsFor();</script>");
CheckBox1.Attributes.Add("onclick", "ManageInputsFor();");
}
Mhhh,我幾乎擁有它..但是你說的部分「實際上,解決方案是刪除最後一行,即在else部分中,刪除selectedIndex = 0。這不應該是真的。你可以將代碼粘貼到你使用這個JS函數的地方嗎? – 2010-04-09 19:01:09
喜Claudio, 請參閱上面更新的問題。 – Lijo 2010-04-09 19:48:47