JSFiddle - React, Tailwind, and code Playground

by jcreamer898

JavaScript

ko.extenders.number = function(target, message) {
    var msg = message || "Value must be a number";
    
    // Set a "sub-observable" on the existing observable
    target.errors = target.errors || ko.observableArray();

    function validate(val) {
        var hasError = isNaN(parseInt(value, 10));
        if (hasError) { 
            target.errors.push(msg);
        }
    }
    
    validate(target());

    target.subscribe(validate);
    
    // Allow chaining
    return target;
};

var ViewModel = {
    foo: ko.observable().extend({
        number: 'use a number d-bag'
    })
};

ViewModel.foo('z');
console.log(ViewModel, ViewModel.foo.errors());