复选框在按钮单击事件上失去状态

时间:2013-06-20 07:36:38

标签: asp.net

我创建了一个网页。我希望这样,当用户在文本框中输入超过0个字符时,复选框应该被选中。如果选中复选框,则在按钮点击事件中打印一些内容。 当用户输入超过0个字符时,复选框被选中。但是当用户点击按钮时,那个时候它会显示checkbox.checked = false。为什么会这样?

在aspx页面

 <script language="javascript" type="text/javascript">
    function displaycharcount()
    {
      if(document.getElementById('TextBox1').value.length   > 0)
      document.getElementById('CheckBox1').checked = true;
    }
    </script>

//
//textbox
//checkbox
// button

//在cs文件中

 protected void Page_Load(object sender, EventArgs e)
    {

        TextBox1.Attributes.Add("onkeyup", " return displaycharcount()");
    }
    protected void btnAdd_Click(object sender, EventArgs e)
    {
        if (CheckBox1.Checked == true)
        {
            Response.Write("Printing .......");
        }
    }

2 个答案:

答案 0 :(得分:0)

因为当您从c#服务器端代码访问CheckBox1.Checked的值时,它会从viewstate中获取值。当您从javascript客户端代码更新CheckBox的checked属性时,它无法更新该viewstate。这就是您在按钮点击事件中获得checkbox.checked = false的原因。

答案 1 :(得分:0)

这种情况正在发生,因为您在javascript中设置了客户端代码的复选框属性,并且调用了一个按钮单击,这是一个服务器端代码。

我建议您使用隐藏字段并将其值设置为您正在检查/取消选中复选框。

在服务器端按钮上,单击“检查此隐藏字段的值而不是复选框”并继续。

我没有发布代码,我让你先尝试这种方法,如果发现任何困难,我们可能会帮助你