web-dev-qa-db-fra.com

Vous validez un formulaire knockout.js?

J'utilise knockout.js dans mon projet ASP.NET MVC. J'ai compris comment afficher un formulaire, sérialiser un objet JSON et afficher des données à l'aide du lien suivant: Comment utiliser knockout.js avec ASP.NET MVC ViewModels?

Mais je ne suis pas en mesure de savoir comment valider le formulaire. Quelle est la meilleure solution pour valider le formulaire?

27
Gayatri

J'ai utilisé le plugin Knockout.Validation ( https://github.com/Knockout-Contrib/Knockout-Validation ) qui a bien fonctionné. Il utilise des extensions dans Knockout afin que vous puissiez étendre les propriétés du modèle pour inclure des règles telles que les correspondances requises, min, max ou de modèle. Vous pouvez également créer des règles personnalisées. J'en ai créé un pour une URL, par exemple. Il a également une règle intégrée pour des choses comme le courrier électronique. Tout cela se trouve dans la page github de la documentation. Il a tout ce dont vous avez besoin pour commencer.

Une autre option consiste à utiliser la validation jquery, qui fonctionne également bien.

36
John Papa

Essayez le plugin Knockout.Validation:

https://github.com/Knockout-Contrib/Knockout-Validation

4
daedalus28

Bien que la réponse soit acceptée, mais je voudrais partager mon approche. Je préfère combiner jquery avec knockout.js et appliquer le plugin jQuery Validation qui convient très bien pour une validation de formulaire côté client discrète. Il fonctionne avant la soumission du formulaire et accepte le formulaire comme paramètre d'entrée. Quelque chose comme ça:

    function ViewModel() {
       var self = this;
       self.firstName = ko.observable();
       self.lastName = ko.observable();
       self.email = ko.observable();
       self.validate = function(form) {
           return $(form).validate();
       };
    };
    var viewModel = new ViewModel();
    ko.applyBindings(viewModel);

La fonction validate () est appelée Si la validation réussit, le formulaire sera soumis, sinon, une erreur sera affichée.

3
johannesMatevosyan