{"_id":"knockout.validation","_rev":"27-483a5223e16b42acfdc9757bc4322d1a","name":"knockout.validation","description":"A KnockoutJS Plugin for model and property validation","dist-tags":{"latest":"2.0.4"},"versions":{"2.0.0-Pre":{"name":"knockout.validation","version":"2.0.0-Pre","description":"A KnockoutJS Plugin for model and property validation","main":"gruntfile.js","dependencies":{"knockout":"~3.0.0"},"devDependencies":{"grunt":"~0.4.1","grunt-cli":"~0.1.9","grunt-contrib-jshint":"~0.6.0","grunt-contrib-uglify":"~0.2.2","grunt-contrib-concat":"~0.3.0","grunt-contrib-qunit":"~0.2.2","grunt-contrib-watch":"~0.5.3","grunt-clear":"~0.2.1"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"https://github.com/Knockout-Contrib/Knockout-Validation.git"},"author":{"name":"@ericmbarnard"},"license":"MIT","bugs":{"url":"https://github.com/Knockout-Contrib/Knockout-Validation/issues"},"_id":"knockout.validation@2.0.0-Pre","dist":{"shasum":"23c63f672bb8c183ed01c74117a2c9b4d40edb18","tarball":"https://registry.npmjs.org/knockout.validation/-/knockout.validation-2.0.0-Pre.tgz","integrity":"sha512-PHb8yAowyWV+Ogi6iH88NPPf2JfdcELzaOAXDnU0x2DUSqpUxqeyeYsrOwfV0IemiYRWgYWKWsNxA+4p6Zqe1Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFJRRO9kNq4x8mnzFGTJq8PjYXQzyykPTz3yIdvj5x8QIgKavzbhMd9gVSetw+9GYD/W/Ym4sNLqYEbCnIsygrsiQ="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"stevegreatrex","email":"a@b.com"},"maintainers":[{"name":"stevegreatrex","email":"a@b.com"}],"directories":{}},"2.0.0-pre.1":{"name":"knockout.validation","version":"2.0.0-pre.1","description":"A KnockoutJS Plugin for model and property validation","main":"Dist/knockout.validation.js","dependencies":{"knockout":"~3.0.0"},"devDependencies":{"grunt":"~0.4.1","grunt-cli":"~0.1.9","grunt-contrib-jshint":"~0.6.0","grunt-contrib-uglify":"~0.2.2","grunt-contrib-concat":"~0.3.0","grunt-contrib-qunit":"~0.2.2","grunt-contrib-watch":"~0.5.3","grunt-clear":"~0.2.1"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"https://github.com/Knockout-Contrib/Knockout-Validation.git"},"author":{"name":"@ericmbarnard"},"license":"MIT","bugs":{"url":"https://github.com/Knockout-Contrib/Knockout-Validation/issues"},"_id":"knockout.validation@2.0.0-pre.1","dist":{"shasum":"f8028360b4735231f18fc8e8ebd5298a3ca012d2","tarball":"https://registry.npmjs.org/knockout.validation/-/knockout.validation-2.0.0-pre.1.tgz","integrity":"sha512-Hfl4gwK9f11z5Qxnc2CIs4NSkcaGk1pksnMQgOlatWPNB21jE3nD6ojrZkqwDYrC1fUtheX1PFd0Q1GJADDZTw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG+Xn1VPJZFFte4R7ItxBLyGsZRNRK2RAxCGGw2i0WM9AiEAooNsM4ixhTQJK1cS1mO/2okIm40v1234nTG8xNt5jWs="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"stevegreatrex","email":"a@b.com"},"maintainers":[{"name":"stevegreatrex","email":"a@b.com"}],"directories":{}},"2.0.0-pre.2":{"name":"knockout.validation","version":"2.0.0-pre.2","description":"A KnockoutJS Plugin for model and property validation","main":"Dist/knockout.validation.js","devDependencies":{"grunt":"~0.4.1","grunt-cli":"~0.1.9","grunt-contrib-jshint":"~0.6.0","grunt-contrib-uglify":"~0.2.2","grunt-contrib-concat":"~0.3.0","grunt-contrib-qunit":"~0.2.2","grunt-contrib-watch":"~0.5.3","grunt-clear":"~0.2.1"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"https://github.com/Knockout-Contrib/Knockout-Validation.git"},"author":{"name":"@ericmbarnard"},"license":"MIT","bugs":{"url":"https://github.com/Knockout-Contrib/Knockout-Validation/issues"},"_id":"knockout.validation@2.0.0-pre.2","dist":{"shasum":"326b433e7e755f32561e01a776f4770119751909","tarball":"https://registry.npmjs.org/knockout.validation/-/knockout.validation-2.0.0-pre.2.tgz","integrity":"sha512-kc2txiw9ponpmBRvLdjxQ6THqSPeiwUMsbkoRprZvS2Ip+eq0/7tqu3ND62Yoj8FAt7mv2uw4yRYFxrR+vbYPA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUBslDp9dnKY7rxX2ncn5RRw1gAUMy2NNU3ZopuBhR8AIgW7W5rp60SFcjIoT61P6X01//bib+3sm2IC+kIyrYFNo="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"stevegreatrex","email":"a@b.com"},"maintainers":[{"name":"stevegreatrex","email":"a@b.com"}],"directories":{}},"2.0.0-pre.3":{"name":"knockout.validation","version":"2.0.0-pre.3","description":"A KnockoutJS Plugin for model and property validation","main":"Dist/knockout.validation.js","files":["Dist/knockout.validation.js"],"dependencies":{},"devDependencies":{"grunt":"~0.4.1","grunt-cli":"~0.1.9","grunt-contrib-jshint":"~0.6.0","grunt-contrib-uglify":"~0.2.2","grunt-contrib-concat":"~0.3.0","grunt-contrib-qunit":"~0.2.2","grunt-contrib-watch":"~0.5.3","grunt-clear":"~0.2.1"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"https://github.com/Knockout-Contrib/Knockout-Validation.git"},"author":{"name":"@ericmbarnard"},"license":"MIT","bugs":{"url":"https://github.com/Knockout-Contrib/Knockout-Validation/issues"},"_id":"knockout.validation@2.0.0-pre.3","dist":{"shasum":"2bd18bf35dff07f349f1fa33f25a5a13fc5bd950","tarball":"https://registry.npmjs.org/knockout.validation/-/knockout.validation-2.0.0-pre.3.tgz","integrity":"sha512-v+MPG/Ee1gCdxfdOS3QCczXftX2viQ76T9NqLGdpkVYM7NW4fUjapoywWMWWyA2kGMWqYNxScFeGkWjFlFSnEw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICy/zc5FSYN40SdkSyv6MzDFfNyevzaVnNlG3ed3YgkMAiAx1G7Pb4qM5mlLa7tZY9lUXEJAYqqgZFwwcoLZq5w/WQ=="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"stevegreatrex","email":"a@b.com"},"maintainers":[{"name":"stevegreatrex","email":"a@b.com"}],"directories":{}},"2.0.0":{"name":"knockout.validation","version":"2.0.0","description":"A KnockoutJS Plugin for model and property validation","main":"dist/knockout.validation.js","files":["dist/knockout.validation.js","localization","CONTRIBUTING.md"],"dependencies":{"knockout":">=2.3.0"},"devDependencies":{"grunt":"~0.4.5","grunt-cli":"~0.1.13","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.7.0","grunt-contrib-concat":"~0.5.0","grunt-contrib-qunit":"~0.5.2","grunt-contrib-watch":"~0.6.1","grunt-clear":"~0.2.1","jshint-stylish":"~1.0.0"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"https://github.com/Knockout-Contrib/Knockout-Validation.git"},"author":{"name":"@ericmbarnard"},"license":"MIT","bugs":{"url":"https://github.com/Knockout-Contrib/Knockout-Validation/issues"},"gitHead":"ec7237e80f64a23f0360cd3088a45f5d2e7468d9","homepage":"https://github.com/Knockout-Contrib/Knockout-Validation","_id":"knockout.validation@2.0.0","_shasum":"46b0a942ac46cd25b84abc28153e58f2eaffcc7e","_from":".","_npmVersion":"2.1.18","_nodeVersion":"0.10.33","_npmUser":{"name":"crissdev","email":"criss.trifan@gmail.com"},"maintainers":[{"name":"stevegreatrex","email":"a@b.com"},{"name":"crissdev","email":"criss.trifan@gmail.com"}],"dist":{"shasum":"46b0a942ac46cd25b84abc28153e58f2eaffcc7e","tarball":"https://registry.npmjs.org/knockout.validation/-/knockout.validation-2.0.0.tgz","integrity":"sha512-lqhwaFFDZYv0B9M9v2g2zqm/BA3rwqg8Yhe9L9WS5TXWh08cDGm+5odzUjrcTv8dRJAKJ375dyEPj7+C7o5h5Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGTnpniYdAXFt496QA9j3v2uBaCdmNPnTp8If9Kpel24AiA5ejwvyqc3avA6N6J3Wxbgs2M+opAkAAwjIti9KGdmlQ=="}]},"directories":{}},"2.0.1":{"name":"knockout.validation","version":"2.0.1","description":"A KnockoutJS Plugin for model and property validation","main":"dist/knockout.validation.js","files":["dist","localization","CONTRIBUTING.md"],"dependencies":{"knockout":">=2.3.0"},"devDependencies":{"grunt":"~0.4.5","grunt-cli":"~0.1.13","grunt-contrib-jshint":"~0.11.0","grunt-contrib-uglify":"~0.7.0","grunt-contrib-concat":"~0.5.0","grunt-contrib-qunit":"~0.5.2","grunt-contrib-watch":"~0.6.1","grunt-clear":"~0.2.1","jshint-stylish":"~1.0.0"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"https://github.com/Knockout-Contrib/Knockout-Validation.git"},"author":{"name":"@ericmbarnard"},"license":"MIT","bugs":{"url":"https://github.com/Knockout-Contrib/Knockout-Validation/issues"},"gitHead":"40966de50e40a3bde9f367209faa2aaeebac5b47","homepage":"https://github.com/Knockout-Contrib/Knockout-Validation","_id":"knockout.validation@2.0.1","_shasum":"4266b6cc8b3b63691005a15bfb6b1d899547288f","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"crissdev","email":"criss.trifan@gmail.com"},"maintainers":[{"name":"stevegreatrex","email":"a@b.com"},{"name":"crissdev","email":"criss.trifan@gmail.com"}],"dist":{"shasum":"4266b6cc8b3b63691005a15bfb6b1d899547288f","tarball":"https://registry.npmjs.org/knockout.validation/-/knockout.validation-2.0.1.tgz","integrity":"sha512-ZjrSDFCD6G/+AeFphdhUgMJgIljQsIS87Hv6O7Wj8KSTAPqYBEqt9xCfV08KFTcHo0Hffi0IeOfuXtwFHfJVUg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGjMnk9Y1/0WCwZ6lLE06IvoLnLgaxaCO3C9NajlPrSrAiEAxt3SJAzWUnMt/xSIsZWw5AdmIf/8revoivhG2wtWhrE="}]},"directories":{}},"2.0.2":{"name":"knockout.validation","version":"2.0.2","description":"A KnockoutJS Plugin for model and property validation","main":"dist/knockout.validation.js","files":["dist","localization","CONTRIBUTING.md"],"peerDependencies":{"knockout":">=2.3.0"},"devDependencies":{"grunt":"~0.4.5","grunt-cli":"~0.1.13","grunt-contrib-jshint":"~0.11.0","grunt-contrib-uglify":"~0.7.0","grunt-contrib-concat":"~0.5.0","grunt-contrib-qunit":"~0.5.2","grunt-contrib-watch":"~0.6.1","grunt-clear":"~0.2.1","jshint-stylish":"~1.0.0"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"https://github.com/Knockout-Contrib/Knockout-Validation.git"},"author":{"name":"@ericmbarnard"},"license":"MIT","bugs":{"url":"https://github.com/Knockout-Contrib/Knockout-Validation/issues"},"gitHead":"802f3028543f6ebb0f500461c390fc0eafa8b893","homepage":"https://github.com/Knockout-Contrib/Knockout-Validation","_id":"knockout.validation@2.0.2","_shasum":"2e4e92df95d0da9cfc39684310441ad4c8267b79","_from":".","_npmVersion":"2.3.0","_nodeVersion":"0.10.35","_npmUser":{"name":"crissdev","email":"criss.trifan@gmail.com"},"maintainers":[{"name":"stevegreatrex","email":"a@b.com"},{"name":"crissdev","email":"criss.trifan@gmail.com"}],"dist":{"shasum":"2e4e92df95d0da9cfc39684310441ad4c8267b79","tarball":"https://registry.npmjs.org/knockout.validation/-/knockout.validation-2.0.2.tgz","integrity":"sha512-k5skIWMcl2S95TyX5JMZ5gt3gMhdpxI3bsbq7SOMVbr7NRrJNBE7ymJCiSMqV3eogNAtssMiDQvxzd4wF3pT6A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC5t8H5NlSHUfDVg7aXi5Grwt3pscetYLWuZ7V4T98XWAiEA0gCb8YnLN4DKuNkOEYm7Y/DqOluLtKapK4D9r5dwuQM="}]},"directories":{}},"2.0.3":{"name":"knockout.validation","version":"2.0.3","description":"A KnockoutJS Plugin for model and property validation","main":"dist/knockout.validation.js","files":["dist","localization","CONTRIBUTING.md"],"peerDependencies":{"knockout":">=2.3.0"},"devDependencies":{"grunt":"~0.4.5","grunt-cli":"~0.1.13","grunt-contrib-jshint":"~0.11.0","grunt-contrib-uglify":"~0.8.0","grunt-contrib-concat":"~0.5.1","grunt-contrib-qunit":"~0.5.2","grunt-contrib-watch":"~0.6.1","grunt-clear":"~0.2.1","jshint-stylish":"~1.0.1"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"https://github.com/Knockout-Contrib/Knockout-Validation.git"},"author":{"name":"@ericmbarnard"},"license":"MIT","bugs":{"url":"https://github.com/Knockout-Contrib/Knockout-Validation/issues"},"gitHead":"f8557bbb21b4bd48bde2ce4f147e1937de629453","homepage":"https://github.com/Knockout-Contrib/Knockout-Validation","_id":"knockout.validation@2.0.3","_shasum":"899de5232364e1ecd5d946e080f6a26293046329","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"crissdev","email":"criss.trifan@gmail.com"},"dist":{"shasum":"899de5232364e1ecd5d946e080f6a26293046329","tarball":"https://registry.npmjs.org/knockout.validation/-/knockout.validation-2.0.3.tgz","integrity":"sha512-cEk2yAVZcNN+Ybj3f06b0s4Ucl3Heo4ozjNtbiE+ljuLBVlkZf/UTqgro/M2rVPObbCmrPSZMJbw4JzxWc5cqw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCIGJ73qt+VAJqBsJHnlNbK5agVeE0tYd7m8770+rD05dTAh9+EdOd9rNm5DpGRuc05Nepgdd1jzqQg0w0h+GKtCC/"}]},"maintainers":[{"name":"stevegreatrex","email":"a@b.com"},{"name":"crissdev","email":"criss.trifan@gmail.com"}],"directories":{}},"2.0.4":{"name":"knockout.validation","version":"2.0.4","description":"A KnockoutJS Plugin for model and property validation","main":"dist/knockout.validation.js","peerDependencies":{"knockout":">=2.3.0"},"devDependencies":{"grunt":"^1.0.4","grunt-cli":"^1.3.2","grunt-contrib-jshint":"^2.1.0","grunt-contrib-uglify":"^4.0.1","grunt-contrib-concat":"^1.0.1","grunt-contrib-qunit":"^3.1.0","grunt-contrib-watch":"^1.1.0","grunt-clear":"^0.2.1","jshint-stylish":"^2.2.1"},"scripts":{"test":"grunt test","build":"grunt","lint":"grunt jshint"},"repository":{"type":"git","url":"git+https://github.com/Knockout-Contrib/Knockout-Validation.git"},"author":{"name":"@ericmbarnard"},"license":"MIT","bugs":{"url":"https://github.com/Knockout-Contrib/Knockout-Validation/issues"},"gitHead":"913a0b234121af5ce6a11dd3cefbfdb045d3a8db","homepage":"https://github.com/Knockout-Contrib/Knockout-Validation#readme","_id":"knockout.validation@2.0.4","_nodeVersion":"12.11.1","_npmVersion":"6.11.3","dist":{"integrity":"sha512-64eDuEvALXf5GsRK5b2WIetF/eSIlTsw/ZDerrhKt+3eRBBk95SXdczTLhcoNL4Hi8Gym14YYIjj7vLCXEeHDA==","shasum":"e87f82f41b5bdcb7029ea6be3fef2a903054558b","tarball":"https://registry.npmjs.org/knockout.validation/-/knockout.validation-2.0.4.tgz","fileCount":40,"unpackedSize":161093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdnZdZCRA9TVsSAnZWagAAO3oP/3PZYr7knQ2M0x6bGgU8\nbGZheyNEBjDiDxtqOePC+Rdp1THHek3dDEiAO5OFsVA/21r2Abmk7vQzXfjX\nd/VPA9M826txpCsm02kxiNPSr6nDlfuDqS4xMSocp6K9HcIM6725GhhqHhlZ\nfJGQG2e9Fm0MLHhG/Hxw9waiW+lh7xaH+Vzgq/HDxfkAQxl8bJ8EfZpSHHFS\nATid/oDaUVcQkdWx/0njll0NexlxT8HXam3aQ6UQ+3mcdd7XgxchgyMJ7KoR\nDqlKdWzP3IJEXl4eIvCiArWq0Nb0sI1uucphrsHZZVkDjCTQ95eKW6SxIDUu\nx0GmgV13iA9t90ncaAHJmy3tagC7wQoe6COp6aqV9S1S0QSvKCNRcPPz7iiu\nGuoTY9W0lpk1mS07ZIWtFKIlJsGPr8WPxbZK+pwDAwZvJDDfUvaNB9O8p0PB\nNwu9r89qi/EXLjFkXqwRIuyA1zk1aT6zIn1bLGVV0BNZYNcB693OcWuO1Ouk\nLRXmhuZfPNtvPwOedmfqWSH1Bg5KvL8WHCB03AvkOiwlmOFGTsKZo3ZR/UhT\n+Okwl65lB/g885O8jO2jQsGrzWS1pt3RVXftOKG8MfdXl5v/AgEntHJoFERz\nsTH2ssycnK6gbJLUMwyAL7ygCaYEvsdBAbS04XFWS0MtdKBg1UL/zQkxX/zs\nfmra\r\n=fun6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXFeuu/EEY1sc/FylIdvCYrSU2lq9yTMPI+HeJLJTFFgIgO3U7QfIjkQExdLcFjdPLP+T5i3Dz8HxeefU+NZShP3o="}]},"maintainers":[{"name":"crissdev","email":"criss.trifan@gmail.com"},{"name":"stevegreatrex","email":"a@b.com"}],"_npmUser":{"name":"crissdev","email":"criss.trifan@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/knockout.validation_2.0.4_1570608984909_0.3748334633619501"},"_hasShrinkwrap":false}},"readme":"# Knockout Validation\r\nA KnockoutJS Plugin for model and property validation\r\n\r\n[![Build Status](https://travis-ci.org/Knockout-Contrib/Knockout-Validation.svg)](https://travis-ci.org/Knockout-Contrib/Knockout-Validation)\r\n[![Build status](https://ci.appveyor.com/api/projects/status/rmas31qgmi07wypi/branch/master?svg=true)](https://ci.appveyor.com/project/crissdev/knockout-validation/branch/master)\r\n[![Bower version](https://badge.fury.io/bo/knockout-validation.svg)](http://badge.fury.io/bo/knockout-validation)\r\n[![npm version](https://badge.fury.io/js/knockout.validation.svg)](http://badge.fury.io/js/knockout.validation)\r\n[![NuGet version](https://badge.fury.io/nu/Knockout.Validation.svg)](http://badge.fury.io/nu/Knockout.Validation)\r\n\r\nContributors:\r\n\r\n* [Eric Barnard](https://github.com/ericmbarnard)\r\n* [Steve Greatrex](https://github.com/stevegreatrex)\r\n* [Cristian Trifan](https://github.com/crissdev)\r\n* [Andy Booth](https://github.com/andybooth)\r\n* [Michal Poreba](https://github.com/michalporeba)\r\n* and many others!\r\n\r\nLicense: [MIT](http://www.opensource.org/licenses/mit-license.php)\r\n\r\n\r\n## Install\r\n\r\n#### Bower\r\n\r\n```sh\r\nbower install knockout-validation --save\r\n```\r\n\r\n#### NuGet\r\n\r\n```ps1\r\nPM> Install-Package Knockout.Validation\r\n```\r\n\r\n#### NPM\r\n\r\n```sh\r\nnpm install knockout.validation --save\r\n```\r\n\r\n#### CDN\r\n\r\n##### [cdnjs](https://cdnjs.com/libraries/knockout-validation)\r\n* https://cdnjs.cloudflare.com/ajax/libs/knockout-validation/2.0.4/knockout.validation.js\r\n* https://cdnjs.cloudflare.com/ajax/libs/knockout-validation/2.0.4/knockout.validation.min.js\r\n\r\n##### [jsdelivr](http://www.jsdelivr.com/#!knockout.validation)\r\n- https://cdn.jsdelivr.net/npm/knockout.validation@2.0.4/dist/knockout.validation.js\r\n- https://cdn.jsdelivr.net/npm/knockout.validation@2.0.4/dist/knockout.validation.min.js\r\n\r\n\r\n## Getting Started\r\n```javascript\r\n//start using it!\r\nvar myValue = ko.observable().extend({ required: true });\r\n\r\n//oooh complexity\r\nvar myComplexValue = ko.observable().extend({\r\n                     required: true,\r\n                     minLength: 3,\r\n                     pattern: {\r\n                          message: 'Hey this doesnt match my pattern',\r\n                          params: '^[A-Z0-9].$'\r\n                     }\r\n                 });\r\n\r\n//or chaining if you like that\r\nvar myComplexValue = ko.observable()\r\n\r\nmyComplexValue.extend({ required: true })\r\n            .extend({ minLength: 3 })\r\n            .extend({ pattern: {\r\n                 message: 'Hey this doesnt match my pattern',\r\n                 params: '^[A-Z0-9].$'\r\n            }});\r\n\r\n//want to know if all of your ViewModel's properties are valid?\r\nvar myViewModel = ko.validatedObservable({\r\n   property1: ko.observable().extend({ required: true }),\r\n   property2: ko.observable().extend({ max: 10 })\r\n});\r\n\r\nconsole.log(myViewModel.isValid()); //false\r\n\r\nmyViewModel().property1('something');\r\nmyViewModel().property2(9);\r\n\r\nconsole.log(myViewModel.isValid()); //true\r\n\r\n```\r\nsee more examples on the Fiddle: http://jsfiddle.net/KHFn8/5424/\r\n\r\n## Native Validation Rules\r\n**Required**:\r\n\r\n```javascript\r\nvar myObj = ko.observable('').extend({ required: true });\r\n```\r\n**Min**:\r\n\r\n```javascript\r\nvar myObj = ko.observable('').extend({ min: 2 });\r\n```\r\n**Max**:\r\n\r\n```javascript\r\nvar myObj = ko.observable('').extend({ max: 99 });\r\n```\r\n**MinLength**:\r\n\r\n```javascript\r\nvar myObj = ko.observable('').extend({ minLength: 3 });\r\n```\r\n**MaxLength**:\r\n\r\n```javascript\r\nvar myObj = ko.observable('').extend({ maxLength: 12 });\r\n```\r\n**Email**:\r\n\r\n```javascript\r\nvar myObj = ko.observable('').extend({ email: true });\r\n```\r\n\r\n... and [MANY MORE](https://github.com/Knockout-Contrib/Knockout-Validation/wiki/Native-Rules)\r\n\r\n_Much thanks to the [jQuery Validation Plug-In](https://github.com/jzaefferer/jquery-validation) team for their work on many of the rules_\r\n## Custom Validation Rules\r\n#### Custom Rules\r\nCustom Rules can be created using the simple example below. All you need is to define a validator function and a default message.\r\nThe validator function takes in the observable's value, and the `params` that you pass in with the `extend` method.\r\n\r\n```javascript\r\nko.validation.rules['mustEqual'] = {\r\n    validator: function (val, params) {\r\n        return val === params;\r\n    },\r\n    message: 'The field must equal {0}'\r\n};\r\nko.validation.registerExtenders();\r\n\r\n//the value '5' is the second arg ('params') that is passed to the validator\r\nvar myCustomObj = ko.observable().extend({ mustEqual: 5 });\r\n```\r\nLearn more about Custom Rules on the [WIKI](https://github.com/Knockout-Contrib/Knockout-Validation/wiki/Custom-Validation-Rules)\r\n\r\n**Or Check out our [User-Contributed Custom Rules](https://github.com/Knockout-Contrib/Knockout-Validation/wiki/User-Contributed-Rules)!**\r\n\r\n## HTML5 Validation Attributes\r\n\r\n**Required**:\r\n\r\n```html\r\n<input type=\"text\" data-bind=\"value: myProp\" required />\r\n```\r\n\r\n**Min**:\r\n\r\n```html\r\n<input type=\"number\" data-bind=\"value: myProp\" min=\"2\" />\r\n<input type=\"week\" data-bind=\"value:myWeek\" min=\"2012-W03\" />\r\n<input type=\"month\" data-bind=\"value:myMonth\" min=\"2012-08\" />\r\n```\r\n\r\n**Max**:\r\n\r\n```html\r\n<input type=\"number\" data-bind=\"value: myProp\" max=\"99\" />\r\n<input type=\"week\" data-bind=\"value:myWeek\" max=\"2010-W15\" />\r\n<input type=\"month\" data-bind=\"value:myMonth\" min=\"2012-08\" />\r\n```\r\n\r\n**Pattern**:\r\n\r\n```html\r\n<input type=\"text\" data-bind=\"value: myProp\" pattern=\"^[a-z0-9].*\" />\r\n```\r\n\r\n**Step**:\r\n\r\n```html\r\n<input type=\"text\" data-bind=\"value: myProp\" step=\"3\" />\r\n```\r\n**Special Note, the 'MinLength' attribute was removed until the HTML5 spec fully supports it**\r\n\r\n## Knockout Bindings\r\n\r\n### ValidationMessage\r\nIf you want to customize the display of your objects validation message, use the `validationMessage` binding:\r\n\r\n```html\r\n<div>\r\n   <input type=\"text\" data-bind=\"value: someValue\"/>\r\n   <p data-bind=\"validationMessage: someValue\"></p>\r\n<div>\r\n```\r\nCheck out more on [Validation Bindings](https://github.com/Knockout-Contrib/Knockout-Validation/wiki/Validation-Bindings)\r\n\r\n## Remote Validation Rules\r\nCheck out our [Async Validation](https://github.com/Knockout-Contrib/Knockout-Validation/wiki/Async-Rules) and [jQuery AJAX Validation](https://github.com/ericmbarnard/Knockout-Validation/wiki/Async-Rules)\r\n\r\n## Localization\r\n\r\nAdd a reference to the localization js files after the Knockout Validation plugin\r\n\r\n```html\r\n<script type=\"text/javascript\" src=\"knockout.validation.js\"></script>\r\n<script type=\"text/javascript\" src=\"el-GR.js\"></script>\r\n<script type=\"text/javascript\" src=\"fr-FR.js\"></script>\r\n<script type=\"text/javascript\" src=\"de-DE.js\"></script>\r\n```\r\n\r\nApply localized messages\r\n\r\n```js\r\nko.validation.locale('el-GR');\r\n```\r\n","maintainers":[{"name":"crissdev","email":"criss.trifan@gmail.com"},{"name":"stevegreatrex","email":"a@b.com"}],"time":{"modified":"2022-06-19T09:06:31.751Z","created":"2013-11-04T17:05:14.563Z","2.0.0-Pre":"2013-11-04T17:11:30.322Z","2.0.0-pre.1":"2013-11-06T14:23:45.417Z","2.0.0-pre.2":"2013-11-08T15:17:42.271Z","2.0.0-pre.3":"2013-11-08T15:22:25.759Z","2.0.0":"2015-01-21T17:44:38.015Z","2.0.1":"2015-01-26T11:13:35.600Z","2.0.2":"2015-02-02T09:52:43.108Z","2.0.3":"2015-05-18T09:42:22.145Z","2.0.4":"2019-10-09T08:16:25.027Z"},"author":{"name":"@ericmbarnard"},"repository":{"type":"git","url":"git+https://github.com/Knockout-Contrib/Knockout-Validation.git"},"users":{"bdukes":true,"asereware":true,"rbeadie":true},"bugs":{"url":"https://github.com/Knockout-Contrib/Knockout-Validation/issues"},"license":"MIT","readmeFilename":"README.md","homepage":"https://github.com/Knockout-Contrib/Knockout-Validation#readme"}