Sha256: 166c5998af9a0a0ed0d025646fc0a77ab1a38e9aec0501c2c46ce89fa6e5373c
Contents?: true
Size: 1.83 KB
Versions: 11
Compression:
Stored size: 1.83 KB
Contents
(function(ko, $) { "use strict"; ko.extenders.externalValidator = function(target, options) { ko.utils.validatorBase(target); var defaults = { message: "", validator: function(v) {}, dependencies: [] }; options = $.extend({}, defaults, options); target.validate = function validate(newValue) { var validatableValue = typeof newValue === 'undefined' ? target() : newValue, validatorResponse = options.validator(validatableValue), validatorResponseHandler; validatorResponseHandler = function validatorResponseHandler(response) { var result, message; if (typeof response === 'boolean') { result = response; message = options.message; } else { result = response.result; message = response.message; } if (result) { target.markValid(); } else { target.markInvalid(message); } }; if (typeof validatorResponse === 'object' && typeof validatorResponse.done === 'function') { target.validationInProgress(true); validatorResponse.done(function(response) { validatorResponseHandler(response); target.validationInProgress(false); }); return; } else { validatorResponseHandler(validatorResponse); return !target.hasError(); } }; //validate whenever the value changes target.subscribe(target.validate); ko.utils.arrayForEach(options.dependencies, function(dependency) { dependency.subscribe(function(newValue) { if (!target.isUnvalidated()) { target.validate(); } }); }); //return the original observable return target; }; })(ko, $);
Version data entries
11 entries across 11 versions & 1 rubygems