JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<span>Condition 1</span> 
<input id="condition1" data-bind="value: condition1" />
<br/>
<span>Condition 2</span> 
<input id="condition2" data-bind="value: condition2" />
<br/>
<span>Available?</span> 
<input id="available" data-bind="value: available, skipLogic: condition1, skipLogic: condition2" />
<br/>
<span>Chain1</span> 
<input id="chain1" data-bind="value: chain1, skiplogic: available" />

CSS

input[disabled] {
    background-color: grey;
}

JavaScript

// Overall viewmodel for this screen, along with initial state
    function ReservationsViewModel() {
        var self = this;
    
        self.condition1 = ko.observable();
        self.condition2 = ko.observable();
        self.available = ko.observable();
        self.chain1 = ko.observable();
    
    }   
        
    var elementConditions = {
        'available': [{
            'Condition': 'condition1() > 0',
            'Type': 'evaluation'
        }, {
            'Condition': 'condition2() > 0',
            'Type': 'evaluation'
        }],
            'chain1': [{
            'Condition': 'available',
            'Type': 'empty'
        }]
    };
    
    
    ko.bindingHandlers.skipLogic = {
        update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
    
    
            var id = $(element).attr("id");
            var conditions = elementConditions[id];
            var isSkipped = false;
            var conditionMet = false;
            
            for (var i = 0; i < conditions.length; i++) {
                conditionMet = false;
                if (conditions[i].Type == "evaluation") {
                    conditionMet = eval('viewModel.' + conditions[i].Condition);
                } else if (conditions[i].Type == "empty") {
                    if ($('#' + conditions[i].Condition).val().length == 0) {
                        conditionMet = true;
                    }
                } else if (conditions[i].Type == "notempty") {
                    if ($('#' + conditions[i].Condition).val().length > 0) {
                        conditionMet = true;
                    }
                }
    
                if (conditionMet == true) {
                    isSkipped = true;
                }
            }
    
            if (isSkipped) {
                eval("viewModel." + id + "('');");            
                $(element).attr("disabled", "disabled");
            } else {
                if (elementSkipped[id] > 0) {
   ...