我想知道如何维护在Javascript中修改的控件状态。
我在 C# ASP.net 2010 Express 中有两个 TextBoxes、一个 DropDownList 和一个按钮(所有 Runat=Server)。
第一个文本框只接受用户输入的任何数据。
第二个文本框启用状态将根据 DDL 选择的值而改变。
如果 ddl 选择的值为“-”,第二个文本框将变为 Enabled = False。
如果不是“-”,它将变为 Enabled = True。此启用是通过 Javascript 完成的。
在我的页面加载事件中,我有以下代码。
if (!IsPostBack)
{
txtKey2.Text = "";
txtKey2.BackColor = System.Drawing.ColorTranslator.FromHtml("#CCCCCC");
txtKey2.Enabled = false;
}
在我的 aspx 页面中,我有一些 javascript 将清除文本框数据并禁用文本框。
这是第二个文本框。
<asp:TextBox ID="txtKey2" runat="server" Width="425px" EnableViewState="False"></asp:TextBox>
这是DDL。
<asp:DropDownList ID="selKey1" runat="server" onchange="EnableSelkey(this.value,1)">
<asp:ListItem Value="0">-</asp:ListItem>
<asp:ListItem Value="1">AND</asp:ListItem>
<asp:ListItem Value="2">OR</asp:ListItem>
</asp:DropDownList>
这是我的 Javascript 的代码。(我有一个实现其他文本框和 ddl 的计划,所以在我的代码中我有 Else if 条件)。
function EnableSelkey(val, strID) {
var txtBox;
if (strID == "1")
txtBox = document.getElementById('<%= txtKey2.ClientID %>');
else if (strID == "2")
txtBox = document.getElementById('<%= txtKey3.ClientID %>');
else
txtBox = document.getElementById('<%= txtKey4.ClientID %>');
if (val != 0) {
txtBox.disabled = false;
txtBox.style.backgroundColor = "White";
txtBox.value = "";
txtBox.select();
}
else {
txtBox.disabled = true;
txtBox.style.backgroundColor = "#CCCCCC";
txtBox.value = "";
}
}
我在按钮单击事件中什么都没有。
通过使用以上所有代码,当我运行项目时,页面加载正常。第二个文本框启用状态设置为 False(通过 Page_Load 事件)。到目前为止好的。
然后从我的浏览器中,我将 ddl 值选择为 other 而不是“-”,由于 javascript,文本框变为启用。还行吧。
我输入值并单击按钮。页面回发发生在这里。文本框仍处于启用状态(因为我的文本框的 EnableViewState = False)。
我将 ddl 值选择为“-”,第二个文本框被禁用。
单击按钮,页面回发发生,但这次文本框仍处于启用状态。<<这是我要解决的问题。我将 EnableViewState、ViewStateMode 更改为不同的值,但仍然相同。
这个有什么解决办法吗?
这是我的测试图片网址。
状态 1 ,
状态 2 ,
状态 3
对不起,很长的帖子。