如何在Code Behind中获取HTML输入复选框的选中值

时间:2015-04-23 18:33:07

标签: javascript c# html asp.net

我在modalpopup中使用html输入复选框控件,该控件在onclick事件中运行javascript函数。现在我的挑战是从代码隐藏中获取此控件的checked属性的值来做一些行为事情。当我向其添加runat="server"属性并在page_load中写入chkIsPrivate.Attributes.Add("onclick", "toggleCheckbox()");时,javascript函数不会触发。

我在网上搜索了一个解决方案,但没有得到任何解决方案。我希望有人能帮助我。

请注意,如果没有runat="server"和page_load中的代码行,则单击复选框控件时会触发javascript函数。但我需要在代码隐藏中获取checked属性的值。

HTML:

<tr>
      <td align="right">Private Campaign:</td>
      <td align="left">
             <input id="chkIsPrivate" type="checkbox" onclick="toggleCheckbox()" />
      </td>
</tr>

<tr id="password_tr" style="display: none">
      <td align="right">Password:</td>
      <td align="left">
           <asp:TextBox  ID="txtPassword" runat="server" TextMode="Password" Width="150px"></asp:TextBox><br />
      </td>
</tr>

<tr id="confirmPassword_tr" style="display: none">
      <td align="right">Confirm Password:</td>
      <td align="left">
        <asp:TextBox ID="txtConfirmPassword" runat="server" TextMode="Password" Width="150px"></asp:TextBox>
      </td>
</tr>

JavaScript的:

function toggleCheckbox() {
                var checkBox = document.getElementById("chkIsPrivate");
                var pwd = document.getElementById("password_tr");
                var confirmPwd = document.getElementById("confirmPassword_tr");
                var hiddenVal = document.getElementById("privateHiddenInput");
                if (checkBox.checked) {
                    pwd.style.display = "table-row";
                    confirmPwd.style.display = "table-row"; 

                }
                else {
                    pwd.style.display = "none";
                    confirmPwd.style.display = "none";
                }
            }

2 个答案:

答案 0 :(得分:1)

通常,如果要在后面的代码中检索复选框的值,则需要使用ASP.Net CheckBox Sever控件,除非您有正当理由不使用它

ASP.Net服务器控件就是出于这种目的。

选中/取消选中复选框时

自动回发

<asp:CheckBox ID="AutoPostbackCheckbox" runat="server" AutoPostBack="True" 
    OnCheckedChanged="AutoPostbackCheckbox_CheckedChanged" />

// Code Behind
protected void AutoPostbackCheckbox_CheckedChanged(object sender, EventArgs e)
{
    bool value = AutoPostbackCheckbox.Checked;
}

按钮点击后退

<asp:CheckBox ID="Checkbox2" runat="server" />
<asp:Button ID="SubmitButton" OnClick="SubmitButton_Click" 
    runat="server" Text="Submit" />

// Code Behind
protected void SubmitButton_Click(object sender, EventArgs e)
{
    bool value = Checkbox2.Checked;
}

返回原始问题

我在您更新的代码中发现了一些问题。您可以使用服务器控件。

在下面的代码中查看5&lt; ---

<asp:CheckBox ID="IsPrivateCheckBox" runat="server" 
   onclick="toggleCheckbox(this)" /> <--- Pass this argument

<script type="text/javascript">
    function toggleCheckbox(checkBox) { <--- add checkBox parameter
        //var checkBox = document.getElementById("chkIsPrivate"); <-- Do not need it
        var pwd = document.getElementById("password_tr");
        var confirmPwd = document.getElementById("confirmPassword_tr");
        if (checkBox.checked) {
            pwd.style.display = "block"; <--- Make sure this is block
            confirmPwd.style.display = "block"; <--- Make sure this is block
        }
        else {
            pwd.style.display = "none";
            confirmPwd.style.display = "none";
        }
    }
</script>

答案 1 :(得分:0)

谢谢你们所有人出来帮助我。但是我找到了解决它的方法来实现它。

我做的是;

  1. 添加隐藏字段:asp:HiddenField ID="hiddenField" runat="server" />
  2. 创建一个属性以检索和设置隐藏字段的值
  3. 并将其添加到我的javascript函数中,将'true''false'添加到隐藏字段,方法是:document.getElementById('<%=hdfIsPrivate.ClientID %>').value = 'true';如果选中了html输入复选框。
  4. 这很好用,因为我能够从后面的代码中访问隐藏字段的值,并且当单击复选框时,javascript会起作用。