J'utilise knockoutjs avec le plugin de validation de knockoutjs pour valider mon modèle de vue. Voici mon code javascriptvalidation knockoutjs - recalculer les règles de validation
// enable validation
ko.validation.init();
// View model
function AppViewModel() {
this.Canceled = ko.observable(false);
this.Name = ko.observable("").extend({
//custom validation
validation: {
validator: function (val, params) {
//alert to show when validation is triggered
alert("validation function was called");
//change validation rule depending on whether cancel button was clicked
if(params.Canceled == true)
return true;
else
return false;
},
message: 'This field is required',
params: {Canceled:this.Canceled()}
}
});
this.errors = ko.validation.group(this);
//function triggered on submit which checks for validation
this.submit = function() {
if(this.errors().length != 0)
this.errors.showAllMessages();
else
alert("no errors detected");
};
//function to cancel validation rules
this.cancelValidation = function() {
this.Canceled(true);
};
}
// Activate knockout.js
ko.applyBindings(new AppViewModel());
et voici mon code HTML
Name: <input type="text" data-bind="value: Name"/><br/><br/>
<button data-bind="click: submit">submit</button> <button data-bind="click: cancelValidation">Cancel validation</button>
Ce que je suis en train de faire est de changer les règles de validation lors de l'exécution si le bouton « Annuler la validation » est cliqué. Pour ce faire, j'utilise une fonction de validation personnalisée avec une variable ko.observable appelée "Annulée". En fonction de la valeur de "Annulé", ma fonction validateur renvoie true ou false. Le problème que j'ai est que la fonction de validation s'exécute seulement une fois quand la page se charge. La fonction n'est pas réexécutée lorsque la valeur de "Annulé" change. Est-ce que c'est un comportement normal? Est-il possible de réexécuter la fonction de validation du modèle actuel lorsque je modifie la valeur de "Annulé"?
Voici un violon pour essayer le code. J'ai ajouté une alerte à l'intérieur de la fonction de validation pour montrer qu'elle ne s'exécute qu'une seule fois lors du chargement de la page.
fonctionne pour moi, merci –