簡體   English   中英

如何使用 javascript 觸發 asp.net customvalidator

[英]How to trigger asp.net customvalidator with javascript

我正在嘗試使用 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;
}

您的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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM