如何使用javascript触发asp.net customvalidator
我试图用java脚本触发asp.net自定义验证器,但它没有触发。其他验证器(如必填字段验证器)将从下面显示的代码中触发。有谁能告诉我下面的代码有什么问题,或者为什么没有触发如何使用javascript触发asp.net customvalidator,javascript,asp.net,.net,Javascript,Asp.net,.net,我试图用java脚本触发asp.net自定义验证器,但它没有触发。其他验证器(如必填字段验证器)将从下面显示的代码中触发。有谁能告诉我下面的代码有什么问题,或者为什么没有触发 <script type="text/javascript"> function CheckValidation(btn) { var valid = false; if (Page_ClientValidate('RtRegValGrp')) {
<script type="text/javascript">
function CheckValidation(btn) {
var valid = false;
if (Page_ClientValidate('RtRegValGrp')) {
alert('valid');
__doPostBack(btn.name, "");
} else {
alert('not valid');
}
}
</script>
<asp:TextBox ID="txtCompanyName" runat="server" MaxLength="100"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="txtCompanyName"
ValidationGroup="RtRegValGrp"
ErrorMessage="Company name is required !"
ForeColor="red" Display="Dynamic" />
<asp:CustomValidator ID="txtCompanyNameValidator" runat="server"
ControlToValidate="txtCompanyName"
ValidationGroup="RtRegValGrp"
OnServerValidate="BlackListValidator"
ForeColor="Red" Display="Dynamic">
</asp:CustomValidator>
<asp:Button ID="Button1" runat="server" CssClass="goldBtn" Text="SUBMIT"
OnClientClick="CheckValidation(this); return false;"
OnClick="Button1_Click" />
//server side code
protected void BlackListValidator(object source, ServerValidateEventArgs args)
{
args.IsValid = false;
}
功能检查验证(btn){
var-valid=false;
如果(第_页ClientValidate('RtRegValGrp')){
警报(“有效”);
__doPostBack(btn.name,“”);
}否则{
警报(“无效”);
}
}
//服务器端代码
受保护的void BlackListValidator(对象源,ServerValidateEventArgs参数)
{
args.IsValid=false;
}
您的CustomValidator
当前仅使用服务器端验证代码设置。。。客户端ASP.Net代码在没有回发的情况下无法知道验证结果
要使其成为客户端,您需要复制javascript中的验证代码(出于安全原因,必须保留服务器端代码),然后设置ClientValidationFunction
属性
<asp:CustomValidator ValidationGroup="RtRegValGrp" ID="txtCompanyNameValidator"
ForeColor="Red" OnServerValidate="BlackListValidator" Display="Dynamic"
ControlToValidate="txtCompanyName" runat="server"
ClientValidationFunction="BlackListValidatorFnc" />
<script>
function BlackListValidatorFnc(src, args) {
args.IsValid = false;
}
</script>
函数BlackListValidatorFnc(src,args){
args.IsValid=false;
}
但是如果(Page_ClientValidate('RtRegValGrp'))没有回发,则会从下面的代码触发诸如requiredfieldvalidator之类的验证器。是的,因为像requiredfieldvalidator
这样的东西在ASP.Net中内置了客户端代码。自定义验证器正是。。。这是习俗。正如您必须编写服务器端代码来执行特定检查一样,您必须复制服务器端代码才能进行客户端检查。对不起,我不知道该如何向你描述好的,谢谢你提供的信息。有没有其他方法可以用java脚本(通过回发)触发服务器端验证。你可以用AJAX做一些事情,但除非这是只能在服务器上发生的事情(例如与数据库相关),否则在javascript中复制它会更有意义。我不得不问你为什么要使用javascript?您的代码似乎不必要地复杂和有缺陷。我看不出为什么不能将ValidationGroup
添加到按钮,然后使用
元素来显示消息。这样就可以完成所有客户端验证,当客户端验证通过时,就会触发回发,服务器端验证也就完成了?