Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript触发asp.net customvalidator_Javascript_Asp.net_.net - Fatal编程技术网

如何使用javascript触发asp.net customvalidator

如何使用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')) {

我试图用java脚本触发asp.net自定义验证器,但它没有触发。其他验证器(如必填字段验证器)将从下面显示的代码中触发。有谁能告诉我下面的代码有什么问题,或者为什么没有触发

<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
添加到按钮,然后使用
元素来显示消息。这样就可以完成所有客户端验证,当客户端验证通过时,就会触发回发,服务器端验证也就完成了?