Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 启用/禁用数据绑定中带有if条件的按钮?淘汰赛_Jquery_Html_Knockout.js - Fatal编程技术网

Jquery 启用/禁用数据绑定中带有if条件的按钮?淘汰赛

Jquery 启用/禁用数据绑定中带有if条件的按钮?淘汰赛,jquery,html,knockout.js,Jquery,Html,Knockout.js,我是个新手,需要一些帮助。我有一个表单,当我点击NEW按钮时,它将被加载,当我点击列表页面(dataTable)中的用户名时,它也将从某个列表页面加载 我需要的是看起来非常基本和直截了当 场景1:当我使用“新建”按钮时,我需要填写所有字段,然后我必须保存(按钮),该按钮将处于启用状态,其中我还有一个“下一阶段”按钮,该按钮已禁用,但在成功保存后,需要将其启用,以便我可以进入下一阶段/页面 场景2:这是我在整理事情时遇到的麻烦。当我从某个列表页面点击用户名链接时,数据将自动填充到表单中,现在我必须

我是个新手,需要一些帮助。我有一个表单,当我点击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,谢谢你的耐心和帮助