18

您可以为标准 ASP.NET Web 表单验证器进行自定义客户端 javascript 验证吗?

例如,使用 asp:RequiredFieldValidator 不理会服务器端代码,但使用 jQuery 实现您自己的客户端通知以突出显示字段或背景颜色。

4

3 回答 3

22

是的,我已经这样做了。我使用 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');
    }
}
于 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 回答