[英]Knockout.js change dropdown possible values based on another dropdown
[英]Toggle state of button based on select dropdown using knockout.js
我有一个小的表格要添加逻辑,现在我一直在尝试根据下拉菜单的选定值在启用和禁用之间更改“添加”按钮的状态。
我的DOM标记如下:
<div>
<select data-bind="options: myOptions, optionsText: 'UserName', optionsValue: 'UserId', optionsCaption: 'Select...'"></select>
<input type="text" class="optional" />
<input class="addButton" type="submit" name="addButton" value="ADD" data-bind="enable: addButtonState" />
</div>
我当前的Knockout.js代码如下:
self.addButtonState = ko.observable(false);
self.toggleAddButtonState = function () {
// Some logic to go here
}
如您所见,下拉菜单的默认值为select...
当提供此默认值时,我希望addButton
处于禁用状态。 但是,选择任何其他选项后,即可启用它。 可选的文本字段应该无关紧要。
我该怎么做?
好吧,这可以通过替代方式完成,而无需额外的逻辑
在这里工作小提琴
查看型号:
self.selectedVal=ko.observable();
self.toggleAddButtonState = function () {
// do what ever you want
}
查看:
<div>
<select data-bind="options: myOptions, optionsText: 'UserName', optionsValue: 'UserId', optionsCaption: 'Select...',value: selectedVal"></select>
<input type="text" class="optional" />
<input class="addButton" type="submit" name="addButton" value="ADD" data-bind="enable: selectedVal" />
</div>
这里的技巧很简单。 最初, selectedVal
是未定义的,您可以使用它并绑定到enable
。
这里可以避免额外的编码,例如,对于下拉列表的更改,我们需要编写计算或订阅等
您可以使用计算的可观察值: http : //knockoutjs.com/documentation/computedObservables.html
//this is for the selected user
self.user = ko.observable();
self.addButtonState = ko.computed(function() {
return self.user() != undefined;
});
您还需要将值绑定添加到选择中,以将所选值绑定到新添加的可观察到的用户:
<select data-bind="options: myOptions, optionsText: 'UserName', optionsValue: 'UserId', optionsCaption: 'Select...', value: user"></select>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.