我正在尝试选中一个复选框时禁用输入框。我正在尝试使用Knockoutjs来完成此操作,但它似乎不起作用。

这是我的html:

<input id="input1" type="text" placeholder="Something Here"
data-bind="disable: makeInvalid"/>
<input type="checkbox" id="chk1" data-bind="checked: makeInvalid"/>
<label>Make Textarea Invalid</label>

这是我的js:
var viewModel = {
        makeInvalid : ko.observable(false),
};

ko.applyBindings(viewModel, document.getElementById("chk1"));

我的小提琴在这里:

https://jsfiddle.net/devEngine/3ag0881z/2/

我尝试遵循关于禁用绑定(bind)的 knockout 指令,他们说这些指令与启用绑定(bind)完全相同,只是相反:

http://knockoutjs.com/documentation/enable-binding.html

谁能告诉我我在做什么错?

任何帮助将非常感激。

最佳答案

这是一个 super 简单的修复程序。您的套用绑定(bind)仅击中ID为chk1的元素。可观察值仅在该范围内受约束。只需删除ko.applyBindings的第二个参数,它就可以正常工作。

var viewModel = {
        makeInvalid : ko.observable(false),
};

    ko.applyBindings(viewModel);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

<input id="input1" type="text" placeholder="Something Here"
data-bind="disable: makeInvalid"/>
<input type="checkbox" id="chk1" data-bind="checked: makeInvalid"/>
<label>Make Textarea Invalid</label>

09-12 07:21