18

標準の ASP.NET Web フォーム バリデーター用にカスタムのクライアント側 JavaScript バリデーションを使用できますか?

たとえば、asp:RequiredFieldValidator を使用して、サーバー側のコードをそのままにして、jQuery を使用して独自のクライアント通知を実装し、たとえばフィールドまたは背景色を強調表示します。

4

3 に答える 3

22

はい、そうしました。Firebug を使用して Dot.Net JS 関数を見つけ、バリデータ関数をハイジャックしました

以下はすべてのバリデーターに適用され、純粋にクライアント側です。検証が実際に実行される方法ではなく、ASP.Net 検証の表示方法を変更するために使用します。元の ASP.net 検証を確実に上書きするために、$(document).ready() でラップする必要があります。

/**
 * 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');
    }
}
于 2008-09-24T02:56:47.197 に答える
11

標準の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>
于 2008-09-24T03:04:30.780 に答える
1

できることは、バリデーターにフックして、次のように新しい評価メソッドを割り当てることです。

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

こちらこちらのドキュメントをご覧ください。

于 2008-09-24T02:47:54.893 に答える