我正在尝试使用带有ASP.NET网络表单的JavaScript进行简单的弹出窗口。
我有以下代码:
<%@ Register Src="~/Controls/BankInformation.ascx" TagName="BankInformation" TagPrefix="ABS" %>
<script type="text/javascript">
$(document).ready(function () {
var bankInformation = $('#<%=bankInformation.ClientID%>');
var sameAsMerchantBankCheckbox = $('#<%=chkSameAsMerchantBank.ClientID%>');
function OpenDirectDebitDialog(dialogID) {
$("#" + dialogID).modal();
}
function ValidateAndCloseDirectDebitDialog(validationGroup, dialogID) {
var pageValid = Page_ClientValidate(validationGroup);
if (pageValid)
$("#" + dialogID).modal("hide");
}
$(sameAsMerchantBankCheckbox).change(function () {
OpenDirectDebitDialog(bankInformation);
});
});
</script>
<asp:CheckBox runat="server" ID="chkDirectDebit" />
<asp:Label runat="server" AssociatedControlID="chkSameAsMerchantBank" ID="txtDirectDebit" meta:resourcekey="lblDirectDebit"></asp:Label>
<asp:CheckBox runat="server" ID="chkSameAsMerchantBank" AutoPostBack="True" Checked="True" />
<asp:Label runat="server" AssociatedControlID="txtSameAsMerchantBank" ID="txtSameAsMerchantBank" meta:resourcekey="lblSameAsMerchantBank"></asp:Label>
<div id="bankInfoDialog" runat="server" class="modal hide fade" tabindex="-1" role="dialog" aria-hidden="true">
<ABS:BankInformation runat="server" ID="bankInformation" />
</div>
取消选择chkSameAsMerchantBank复选框时,应该触发事件并调用OpenDirectDebitDialog函数。但所有这一切都是页面刷新(我猜自动发回)。浏览器控制台中没有错误或任何内容 有人看到我做错了什么吗?我甚至可以像这样在modal上调用隐藏的表单吗?
答案 0 :(得分:1)
您不必在函数中再次重新创建jQuery id选择器:
$("#" + dialogID).modal();
因为传递的参数已经是一个jQuery对象。所以只需从中删除"#"+
。
为什么呢?见下文:
因为这个var是一个jQuery对象:
var bankInformation = $('#<%=bankInformation.ClientID%>'); // id selector jq object.
你不必在函数中再次使它成为它的id选择器:
var sameAsMerchantBankCheckbox = $('#<%=chkSameAsMerchantBank.ClientID%>');// id selector.
在更改事件的函数中传递:
$(sameAsMerchantBankCheckbox).change(function () { // <----this will do.
OpenDirectDebitDialog(bankInformation); // <----passed the jQuery selector object here.
});
所以你只需要这样做:
function OpenDirectDebitDialog(dialogID) {
dialogID.modal(); // it would suffice.
// or $(dialogID).modal();
}
答案 1 :(得分:1)
你必须做
var sameAsMerchantBankCheckbox = $('#<%=chkSameAsMerchantBank.ClientID%>');
在您的代码中然后访问复选框ID