Javascript 敲除启用绑定不起作用

Javascript 敲除启用绑定不起作用,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我无法使enable绑定在Knockout JS中工作。当enabled属性设置为false时,按钮未被禁用,我仍然可以单击它 看 var ViewModel=函数(){ var self=这个; 自启用=可观测(假); self.isVisible=ko.observable(真); self.clicked=function(){ 警报(“您单击了按钮”); }; }; $(函数(){ var模型=新的ViewModel(); ko.应用绑定(模型); }) 绑定无法处

我无法使enable绑定在Knockout JS中工作。当enabled属性设置为false时,按钮未被禁用,我仍然可以单击它


var ViewModel=函数(){
var self=这个;
自启用=可观测(假);
self.isVisible=ko.observable(真);
self.clicked=function(){
警报(“您单击了按钮”);
};
};
$(函数(){
var模型=新的ViewModel();
ko.应用绑定(模型);
})          
绑定无法处理您想要的任何内容

这对于输入、选择和文本区域等表单元素非常有用 它也适用于按钮。就像我的例子一样

但它不适用于您的链接。您正在使用twitter引导,他们使用css类启用/禁用“按钮”。所以你必须这样使用:

data-bind="css: { yourClass: enabled }"

检查引导中哪个类负责显示您的“按钮”,并使用css绑定相应地修改您的代码。

我通过将锚定标记更改为按钮使其工作,但不确定为什么这样做可以工作,但仍然可以工作

更新


萨尔瓦多在回答中说的话

您必须了解,通过在目标DOM元素上放置一个
disabled
属性,在敲除中启用
禁用
绑定是有效的。现在,如果您查看HTML文档,您会注意到并非所有HTML元素都支持此属性

实际上,只有表单元素(例如
)才可以<代码>
没有。

右侧: 启用
禁用

错: 启用
禁用


确保使用
禁用
而不是
禁用
启用
而不是
启用

<input type="text" data-bind="value: foo, enable: isEditing"/>   YES!!
<input type="text" data-bind="value: foo, enabled: isEditing"/>   NO!
是!!
不

容易犯错误:-)

对于可能在搜索中找到此项的人:

我在使enable绑定也工作时遇到了问题。我的问题是试图使用一个复杂的表达式,而不引用可观察的函数:

<input type="button" data-bind="enable:AreAllStepsVerified && IsFormEnabled, click:SubmitViewModel"/>

应该是:

<input type="button" data-bind="enable:AreAllStepsVerified() && IsFormEnabled(), click:SubmitViewModel"/>


请参阅:

谢谢。我们得出了相同的结论,但你更快地做到了。这是旧的,但小提琴需要在按钮的数据绑定上加一个结束引号。这是有效的,因为
a
没有禁用启用选项。你要么使用bootstrap的css(正如我建议的),要么把它变成一个真正的按钮(就像你在这里改变的那样)。我至少每两个月就会忘记一次。
<input type="button" data-bind="enable:AreAllStepsVerified && IsFormEnabled, click:SubmitViewModel"/>
<input type="button" data-bind="enable:AreAllStepsVerified() && IsFormEnabled(), click:SubmitViewModel"/>