C# 使用Javascript隐藏带有验证的asp.net面板
我需要一种使用Javascript隐藏/显示asp.net面板的方法,其中包含验证程序 我已使用以下代码成功隐藏面板:C# 使用Javascript隐藏带有验证的asp.net面板,c#,javascript,asp.net,C#,Javascript,Asp.net,我需要一种使用Javascript隐藏/显示asp.net面板的方法,其中包含验证程序 我已使用以下代码成功隐藏面板: function ShowHidePanel(panelId, isShown) { var pnl = document.getElementById(panelId); if (pnl != null) { if (isShown) { pnl.style.display = 'block'; }
function ShowHidePanel(panelId, isShown) {
var pnl = document.getElementById(panelId);
if (pnl != null) {
if (isShown) {
pnl.style.display = 'block';
}
else {
pnl.style.display = 'none';
}
}
}
function ToggleValidator(validatorId, enabled) {
var validator = document.getElementById(validatorId);
if (validator != null) {
ValidatorEnable(validator, enabled);
}
}
我正在尝试使用以下代码禁用内部的所有验证器:
function ShowHidePanel(panelId, isShown) {
var pnl = document.getElementById(panelId);
if (pnl != null) {
if (isShown) {
pnl.style.display = 'block';
}
else {
pnl.style.display = 'none';
}
}
}
function ToggleValidator(validatorId, enabled) {
var validator = document.getElementById(validatorId);
if (validator != null) {
ValidatorEnable(validator, enabled);
}
}
然而,即使我的面板是隐藏的,对里面那些验证器的验证仍然在启动
任何想法都将不胜感激。您将面板隐藏在客户端,因此它不会对验证器产生任何影响。他们可以访问控件,从而触发验证 禁用验证器应该可以工作-唯一的问题可能是您传递了错误的id。您应该使用服务器端验证器控件的
ClientID
属性来引用客户端的验证器
无论如何,解决问题的另一个方法是在面板隐藏时禁用面板中的关联控件。如果控件被禁用,那么验证程序将不会被触发。我遇到了同样的问题,也许有一个更优雅的解决方案,但我在需要时使用自定义验证程序进行“条件”验证 例如,如果用户选择SSN单选按钮,我只需要SSN
<asp:CustomValidator ID="cvSsn" runat="server" ControlToValidate="tbSsn"
EnableClientScript="true" Display="Dynamic" ValidateEmptyText="true"
ClientValidationFunction="onValidateSsn" OnServerValidate="OnValidateSSN"
Text="SSN required" ErrorMessage="SSN required" CssClass="validation-error"
ValidationGroup='Company' />
您需要jQuery,并且必须在验证器上设置ValidationGroup属性,但这应该可以工作
$("#<%= pnlContainer.ClientID %>")
.find("span[validationGroup='MyValidationGroup']")
.each(function () { ValidatorEnable(this, false); });
$(“#”)
.find(“span[validationGroup='MyValidationGroup']”)
.each(函数(){ValidatorEnable(this,false);});
在使用自定义验证器的情况下,如果需要使用服务器验证而不是客户端验证,该怎么办?将EnableClientScript
设置为false并删除ClientValidationFunction
属性。然后将OnServerValidatee
事件处理程序属性添加到控件声明和代码隐藏中。上面的示例具有OnServerValidate
属性。我总是确保实现OnServerValidate,因为可以在客户端禁用javascript。