【发布时间】:2016-01-20 09:15:11
【问题描述】:
我正在使用 ASP.NET 复选框控件。我想要做的是简单地改变复选框更改事件上按钮的可见性。 如果选中复选框则隐藏按钮,否则如果未选中则显示按钮。
我的 jQuery 代码有 2 个问题。
初始更改事件不会被触发。我在 jQuery 代码上设置了断点并且函数没有被调用。在第二次更改时,它会定期调用。
当按钮显示时,它仅在不到一秒的时间内可见,然后返回隐藏状态,即使它显示在下一次更改之前也是可见的。
这是我的 ASP.NET 代码:
<asp:UpdatePanel UpdateMode="Conditional" ID="upDirectDebitPanel" runat="server" EnableViewState="True">
<ContentTemplate>
<div runat="server" id="divSameAsMerchant" visible="False">
<asp:CheckBox runat="server" ID="chkSameAsMerchantBank" AutoPostBack="True" Checked="True" OnCheckedChanged="chkSameAsMerchantBank_CheckedChanged" />
<asp:Label runat="server" AssociatedControlID="chkSameAsMerchantBank" ID="lblSameAsMerchantBank" meta:resourcekey="lblSameAsMerchantBank"></asp:Label>
<asp:Button runat="server" ID="btnShowBankInformationModal" meta:resourcekey="btnShowBankInformationModal" CausesValidation="False" style="visibility: hidden"/>
</div>
</ContentTemplate>
</asp:UpdatePanel>
这是 jQuery 代码:
var sameAsMerchantBank = $('#<%=chkSameAsMerchantBank.ClientID%>');
var btnShowBankInformationModal = $('#<%=btnShowBankInformationModal.ClientID%>');
$(sameAsMerchantBank).change(function () {
if ($(this).is(":checked")) {
$(btnShowBankInformationModal).css("visibility", "hidden");
}
$(btnShowBankInformationModal).css("visibility", "visible");
});
这是该复选框的后端事件:
protected void chkSameAsMerchantBank_CheckedChanged(object sender, EventArgs e)
{
if (chkSameAsMerchantBank.Checked)
{
SetShortAccountInfo(merchantIban.Value, merchantAccountNumber.Value,
merchantSwiftNumber.Value);
}
else
{
SetShortAccountInfo(directDebitIban.Value, directDebitAccountNumber.Value, directDebitSwiftNumber.Value);
}
}
有人知道我做错了什么吗?
【问题讨论】:
-
试试
$(document).on("change",sameAsMerchantBank,function () { //do stuff }); -
另外你应该写
else它每次都输入$(btnShowBankInformationModal).css("visibility", "visible"); -
@ParthTrivedi 是的,谢谢,我刚刚注意到缺少其他部分。这解决了一部分问题。但是按钮仍然只显示很短的时间......
-
是的,因为您有
Checked="True",然后在DOM加载后触发此change事件 -
你能分享一下你在
chkSameAsMerchantBank_CheckedChanged事件下的表现吗?
标签: javascript jquery asp.net checkbox