0

我创建了一个网页。我想要这样,当用户在文本框中输入超过 0 个字符时,复选框应该被选中。如果复选框被选中,则在 buttonclick 事件中打印一些东西。当用户输入超过 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 .......");
        }
    }
4

2 回答 2

0

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

于 2013-06-20T07:44:17.423 回答
0

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

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

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

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

于 2013-06-20T07:45:01.160 回答