Jquery 启用/禁用数据绑定中带有if条件的按钮?淘汰赛
我是个新手,需要一些帮助。我有一个表单,当我点击NEW按钮时,它将被加载,当我点击列表页面(dataTable)中的用户名时,它也将从某个列表页面加载 我需要的是看起来非常基本和直截了当 场景1:当我使用“新建”按钮时,我需要填写所有字段,然后我必须保存(按钮),该按钮将处于启用状态,其中我还有一个“下一阶段”按钮,该按钮已禁用,但在成功保存后,需要将其启用,以便我可以进入下一阶段/页面 场景2:这是我在整理事情时遇到的麻烦。当我从某个列表页面点击用户名链接时,数据将自动填充到表单中,现在我必须使我的下一阶段按钮在加载时提前启用,因为它已经是一个保存的表单 到目前为止,我尝试的是:Jquery 启用/禁用数据绑定中带有if条件的按钮?淘汰赛,jquery,html,knockout.js,Jquery,Html,Knockout.js,我是个新手,需要一些帮助。我有一个表单,当我点击NEW按钮时,它将被加载,当我点击列表页面(dataTable)中的用户名时,它也将从某个列表页面加载 我需要的是看起来非常基本和直截了当 场景1:当我使用“新建”按钮时,我需要填写所有字段,然后我必须保存(按钮),该按钮将处于启用状态,其中我还有一个“下一阶段”按钮,该按钮已禁用,但在成功保存后,需要将其启用,以便我可以进入下一阶段/页面 场景2:这是我在整理事情时遇到的麻烦。当我从某个列表页面点击用户名链接时,数据将自动填充到表单中,现在我必须
<button id="btnSave" class="btn" data-bind="click:$data.save">SAVE</button>
<input type ="button" id="nextstage" data-bind="click:$root.nextstage,enable:false" value="NEXT STAGE"/>
保存
我还尝试在数据绑定中使用IF条件,而我完全不知道如何进行绑定
我的想法:在数据绑定中,我将根据表单上的字段启用/禁用下一阶段,例如,如果我有类似的内容
<input type="text" id="txtComepitors" data-bind="value:$data.Competitors"/>
在我的页面加载中,如果文本框为空,我将禁用;如果不是,我将启用。所以我只需要if condition在数据绑定中启用/禁用nextstage
这就是我所拥有的,遗憾的是,我认为它缺乏适当的实现。很难从你的问题中准确地得到你所问的,但是最干净的方法是使用
计算的可观察的
因此,在视图模型中的某个地方,您会有如下内容:
self.canSave = ko.computed(function() {
// test conditions for saving here (i.e. whether all the fields have values)
// and return true if you can save
// for example:
return self.someProperty() && self.someOtherProperty();
});
现在,您可以像这样使用enable绑定:
<input type="button" value="Save Me!" data-bind="enable: canSave" />
这里有一个例子来演示。注意“保存”按钮是如何变灰的,直到两个文本框都有一些值
您可以根据需要使计算的中的逻辑变得复杂,而knockout将跟踪依赖项,并在任何一个依赖观察项发生变化时重新评估它。这可以防止虚拟机逻辑混乱您的视图。您可以分享完整的html
和javascript
代码吗,理想情况下:)我很乐意,但这很费时,我只想要一个逻辑,比如如果x有值,那么按钮应该被启用,如果x没有,按钮应该被禁用:)就像那样。@supercol:我理解你的感受。但如果你想让人们花时间回答一个问题,你至少应该愿意花时间在这个问题上。我同意你的看法:)干杯,我接受你的建议。我将使用computed并让您知道:)是的,但我太懒了,一直在考虑数据绑定中的IF条件。对不起,我的问题不清楚。感谢您的帮助If
条件也有其用途,但区别在于If
条件如果计算结果为false,将实际删除其中的DOM元素。所以它不会被禁用,它会完全消失。如果你的测试比只测试单个值的“真实性”更复杂,你可能应该使用computed
。Mate well一切正常,但在save按钮下(成功保存时),我必须启用nextstage按钮。到目前为止,使用computed的数据绑定尚未启用。任何ideas@supercool:同样,如果没有更多的代码,我基本上是在猜测。但我的猜测是,您应该添加一个canNextStage
属性,它可以是一个常规的ko.observeable
属性,并在下一阶段按钮上绑定enable
。然后在保存功能中,成功保存后,只需将canNextStage
更新为true
。他非常抱歉,我这样做了。是的,我只需要使用自我。在我的成功的下一个阶段:)干杯。很抱歉打扰了你和ty,谢谢你的耐心和帮助