簡體   English   中英

您是否可以為標准ASP.NET Web窗體驗證器進行自定義客戶端JavaScript驗證?

[英]Can you have custom client-side javascript Validation for standard ASP.NET Web Form Validators?

您是否可以為標准ASP.NET Web窗體驗證器進行自定義客戶端JavaScript驗證?

例如,使用asp:RequiredFieldValidator單獨保留服務器端代碼,但使用jQuery實現自己的客戶端通知以突出顯示字段或背景顏色。

是的我已經這樣做了。 我使用Firebug找出了Dot.Net JS函數,然后劫持了驗證器函數

以下內容適用於所有驗證器,純粹是客戶端。 我用它來改變ASP.Net驗證的顯示方式,而不是實際驗證的實現方式。 它必須包裝在$(document).ready()中,以確保它覆蓋原始的ASP.net驗證。

/**
 * Re-assigns a couple of the ASP.NET validation JS functions to
 * provide a more flexible approach
 */
function UpgradeASPNETValidation(){
    // Hi-jack the ASP.NET error display only if required
    if (typeof(Page_ClientValidate) != "undefined") {
        ValidatorUpdateDisplay = NicerValidatorUpdateDisplay;
        AspPage_ClientValidate = Page_ClientValidate;
        Page_ClientValidate = NicerPage_ClientValidate;
   }
}

/**
 * Extends the classic ASP.NET validation to add a class to the parent span when invalid
 */
function NicerValidatorUpdateDisplay(val){
    if (val.isvalid){
        // do custom removing
        $(val).fadeOut('slow');
    } else {
        // do custom show
        $(val).fadeIn('slow');
    }
}

/**
 * Extends classic ASP.NET validation to include parent element styling
 */
function NicerPage_ClientValidate(validationGroup){
    var valid = AspPage_ClientValidate(validationGroup);

    if (!valid){
        // do custom styling etc
        // I added a background colour to the parent object
        $(this).parent().addClass('invalidField');
    }
}

標准的CustomValidator具有ClientValidationFunction屬性:

<asp:CustomValidator ControlToValidate="Text1" 
                     ClientValidationFunction="onValidate" />

<script type='text/javascript'>
function onValidate(validatorSpan, eventArgs)
 { eventArgs.IsValid = (eventArgs.Value.length > 0);
   if (!eventArgs.IsValid) highlight(validatorSpan);
 }
</script>

您可以做的是掛鈎驗證器並分配一個新的評估方法,如下所示:

  <script type="text/javascript">
        rfv.evaluationfunction = validator;

        function validator(sender, e) {
            alert('rawr');
        }
    </script>

rfv是我所需的字段驗證器的ID。 您必須在頁面底部執行此操作,以便在注冊驗證程序的javascript之后分配它。

只需使用CustomFieldValidator並分配其客戶端驗證屬性就容易多了。

<asp:CustomValidator ControlToValidate="txtBox" ClientValidationFunction="onValidate" />

<script type='text/javascript'>
function onValidate(sender, e)
 { 
     alert('do validation');
 }
</script>

查看此處此處的文檔。

暫無
暫無

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

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