我在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";
}
}
答案 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)
谢谢你们所有人出来帮助我。但是我找到了解决它的方法来实现它。
我做的是;
asp:HiddenField ID="hiddenField" runat="server" />
'true'
或'false'
添加到隐藏字段,方法是:document.getElementById('<%=hdfIsPrivate.ClientID %>').value = 'true';
如果选中了html输入复选框。 这很好用,因为我能够从后面的代码中访问隐藏字段的值,并且当单击复选框时,javascript会起作用。