C# 当客户端验证失败时,防止模式对话框在提交时关闭
我在页面上有一个提交按钮,单击该按钮后,会显示一个模式弹出窗口。此模式弹出窗口包含一个复选框,必须选中该复选框才能单击模式的“确定”按钮:C# 当客户端验证失败时,防止模式对话框在提交时关闭,c#,asp.net,C#,Asp.net,我在页面上有一个提交按钮,单击该按钮后,会显示一个模式弹出窗口。此模式弹出窗口包含一个复选框,必须选中该复选框才能单击模式的“确定”按钮: <script language="javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script language="javascript" type="text/javascript"&
<script language="javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script language="javascript" type="text/javascript">
function cvcbCertify_ClientValidate(sender, e) {
var elem = document.getElementById('<%= cbCertify.ClientID %>');
if (elem.checked)
e.IsValid = true;
else {
$('.pnlConfirm').show(); //not working?
e.IsValid = false;
}
}
函数CVCBCertificate\u ClientValidate(发送方,e){
var elem=document.getElementById(“”);
如果(元素已选中)
e、 IsValid=true;
否则{
$('.pnlConfirm').show();//不工作?
e、 IsValid=false;
}
}
此处弹出文本
必修的。
问题是当验证失败时,模式窗口关闭。如何防止此窗口关闭或重新显示此窗口?唯一的方法是使用
UpdatePanel
。此外,这将允许您将AsyncPostBackTrigger
与条件UpdateMode
一起使用,并与控制事件一起使用
比如说
<asp:Panel runat="server" ID="pnlConfirm" Style="display: none; background-color: White;
border: solid 1px Gray; width: 90%; height: 100%; padding: 10px" CssClass="pnlConfirm">
<asp:UpdatePanel ID="upItem" runat="server">
<ContentTemplate>
popup text here
<asp:CheckBox runat="server" ID="cbCertify" Text="I Certify" CssClass="cbCertify">
</asp:CheckBox>
<br />
<asp:CustomValidator runat="server" ID="cvcbCertify" ClientValidationFunction="cvcbCertify_ClientValidate">Required.</asp:CustomValidator>
<br />
<div style="text-align: center">
<asp:Button runat="server" ID="btnConfirmCertify" Text="OK" />
<asp:Button runat="server" ID="btnCancel" Text="Cancel" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
此处弹出文本
必修的。
解决方案是摆脱ConfirmButtonExtender并进行我自己的验证:
function Validate_Click() {
//using asp.net checkbox so have to go this route to get bool
var checked = $('#<%= cbCertify.ClientID %>').is(':checked');
if (checked) {
$('.lblConfirmCertifyError').hide();
return true;
}
else {
$('.lblConfirmCertifyError').show();
return false;
}
}
函数验证\u单击(){
//使用asp.net复选框,因此必须按此路线获取bool
var checked=$('#')。是(':checked');
如果(选中){
$('.lblConfirmCertifyError').hide();
返回true;
}
否则{
$('.lblConfirmCertifyError').show();
返回false;
}
}
此处弹出文本
为什么不禁用“确定”按钮,直到选中复选框?无法使用更新面板实现此功能,但找到了我发布的另一个解决方案
function Validate_Click() {
//using asp.net checkbox so have to go this route to get bool
var checked = $('#<%= cbCertify.ClientID %>').is(':checked');
if (checked) {
$('.lblConfirmCertifyError').hide();
return true;
}
else {
$('.lblConfirmCertifyError').show();
return false;
}
}
<asp:Panel runat="server" ID="pnlConfirm" Style="display: none; background-color: White;
border: solid 1px Gray; width: 90%; height: 100%; padding: 10px">
popup text here
<asp:CheckBox runat="server" ID="cbCertify" Text="I Certify" CssClass="cbCertify">
</asp:CheckBox>
<br />
<asp:Label runat="server" ID="lblConfirmCertifyError" Text="Required." ForeColor="Red"
Style="display: none" CssClass="lblConfirmCertifyError"></asp:Label>
<br />
<div style="text-align: center">
<asp:Button runat="server" ID="btnConfirmCertify" Text="OK" CssClass="btnConfirmCertify" OnClientClick="return Validate_Click()" />
<asp:Button runat="server" ID="btnCancel" Text="Cancel" />
<asp:Button runat="server" ID="btnDummy" Text="" Style="display: none" />
</div>
</asp:Panel>