2016-01-13 1 views
1

J'ai deux champs ReasonDate et RegistrationDate. Selon la logique métier, RegistrationDate ne peut pas être antérieure à ReasonDate. Je vérifie dans le gestionnaire d'événements « onValidate » de la forme comme ceci:Comment ajouter une validation personnalisée sur w2ui?

onValidate: function(event) { 
    var pattern = /(\d{2})\.(\d{2})\.(\d{4})/; 
    var reasonDt = new Date(w2ui.form.record.ReasonDate.replace(pattern, '$3-$2-$1')); 
    var registrationDt = new Date(w2ui.form.record.RegistrationDate.replace(pattern, '$3-$2-$1')); 

    if (reasonDt > registrationDt) { 
     $('#ReasonDate').w2tag('@TranslateText("accard_ReasonDateShouldLessThanRegDate")'); 
     //$('#ReasonDate').addClass('w2ui-error'); 
    } 
}, 

et cliquez sur le bouton Je validation comme ceci:

add: function() { 
    $('#BudgOrgTin').removeClass('w2ui-error'); 
    var errors = w2ui.form.validate(true); 
    if (errors.length > 0) { 
     return; 
    } 

Comment ajouter correctement mon message d'erreur de sorte que lorsque Je valide la forme il renvoie aussi mon erreur?

Répondre

1

J'ai trouvé la solution pour cela dans les sources de w2ui:

onValidate: function(event) { 
    var pattern = /(\d{2})\.(\d{2})\.(\d{4})/; 
    var reasonDt = new Date(w2ui.form.record.ReasonDate.replace(pattern, '$3-$2-$1')); 
    var registrationDt = new Date(w2ui.form.record.RegistrationDate.replace(pattern, '$3-$2-$1')); 

    if (reasonDt > registrationDt) { 

    event.errors.push({field: this.get('RegistrationDate'), 
         error: '@TranslateText("accard_ReasonDateShouldLessThanRegDate")'}) 

    // **no need for this anymore** w2ui does it for you 
    // $('#ReasonDate').w2tag('@TranslateText("accard_ReasonDateShouldLessThanRegDate")'); 
    //$('#ReasonDate').addClass('w2ui-error'); 
    } 
},