Vraag Kunt u een aangepaste JavaScript-validatie op de client hebben voor standaard ASP.NET Web Form Validators?


Kunt u een aangepaste JavaScript-validatie op de client hebben voor standaard ASP.NET Web Form Validators?

Gebruik bijvoorbeeld een asp; RequiredFieldValidator laat de code aan de serverzijde alleen, maar implementeert uw eigen clientmelding met jQuery om bijvoorbeeld het veld of de achtergrondkleur te markeren.


16
2017-09-24 00:14


oorsprong


antwoorden:


De standaard CustomValidator heeft een ClientValidationFunction eigendom voor dat:

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

11
2017-09-24 03:04



Ja dat heb ik gedaan. Ik heb Firebug gebruikt om de Dot.Net JS-functies te achterhalen en vervolgens de validatiefuncties gekaapt

Het volgende zal op alle validators worden toegepast en is zuiver klantzijde. Ik gebruik het om de manier te veranderen waarop de ASP.Net-validatie wordt weergegeven, niet de manier waarop de validatie daadwerkelijk wordt uitgevoerd. Het moet worden ingepakt in een $ (document) .ready () om ervoor te zorgen dat het de oorspronkelijke ASP.net-validatie overschrijft.

/**
 * 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');
    }
}

21
2017-09-24 02:56



Wat u kunt doen is inhaken op de validator en een nieuwe evaluatiemethode toewijzen, zoals deze:

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

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

rfv is de ID van mijn vereiste veldvalidator. U moet dit onderaan uw pagina doen, zodat het wordt toegewezen nadat het javascript voor de validator is geregistreerd.

Het is veel eenvoudiger om gewoon de CustomFieldValidator te gebruiken en de validatie-eigenschap aan de kant van de client toe te wijzen.

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

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

Bekijk de documentatie hier en hier.


1
2017-09-24 02:47