我创建了一个网页。我希望这样,当用户在文本框中输入超过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 .......");
}
}
答案 0 :(得分:0)
因为当您从c#服务器端代码访问CheckBox1.Checked
的值时,它会从viewstate中获取值。当您从javascript客户端代码更新CheckBox的checked属性时,它无法更新该viewstate。这就是您在按钮点击事件中获得checkbox.checked = false
的原因。
答案 1 :(得分:0)
这种情况正在发生,因为您在javascript中设置了客户端代码的复选框属性,并且调用了一个按钮单击,这是一个服务器端代码。
我建议您使用隐藏字段并将其值设置为您正在检查/取消选中复选框。
在服务器端按钮上,单击“检查此隐藏字段的值而不是复选框”并继续。
我没有发布代码,我让你先尝试这种方法,如果发现任何困难,我们可能会帮助你