动态检查asp.net复选框,不回发

Dynamically check asp net checkbox without postback

本文关键字:复选框 检查 asp net 动态      更新时间:2023-09-26

我有一个帐户管理页面,可以让用户更改自己的信息。我想有一个复选框被选中,当他们点击一个文本框开始编辑它,让他们知道,程序知道什么将被更新。我想我可以通过回发来做到这一点,但如果可能的话,我希望避免额外的回发。

我认为这可以用javascript完成…但我不知道怎么做。

——编辑——

@Muhammad艾克塔

我创建了一个空白页,并尝试了以下代码:

<%@ Page Title="" Language="C#" MasterPageFile="~/BlueBlack.Master" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="LinkFactory.WebForm2" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Head" runat="server">
<script type="text/javascript">
function update()
{
  if(document.getElementById('<%=check.ClientID %>').value != '')
  {
    document.getElementById('<%=check.ClientID %>').checked = true;
  }
  else
  {
    document.getElementById('<%=check.ClientID %>').checked = false;
  }
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <asp:CheckBox ID="check" runat="server" />
    <asp:TextBox ID="TextBox1" runat="server" onkeypress="update();"></asp:TextBox>
</asp:Content>

—Edit 2—

关于答案:

我在我的页面标题中使用了他的脚本。由于某些原因,我需要输入2个字符,但我认为这是可以的

可以使用onkeypress事件调用JS函数

<asp:TextBox ID="TextBox1" runat="server" onkeypress="update();"></asp:TextBox>
function update()
{
  if(document.getElementById('<%=TextBoxID.ClientID %>').value != '')
  {
    document.getElementById('<%=CheckBoxID.ClientID %>').checked = true;
  }
  else
  {
    document.getElementById('<%=CheckBoxID.ClientID %>').checked = false;
  }
}

您可以在Javascript中做到这一点,而不必在标记中添加内联事件,这使它看起来更好,更容易维护:

document.getElementById('<%=TextBoxID.ClientID %>').focus = function() {
    document.getElementByID('<%=CheckBoxID.ClientID %>').checked = true;
}

这里假设您希望在焦点放在文本框上时触发事件