2016-08-12 22 views
0

后启用它,我想创建三个选项淘汰赛JS禁用下拉选项再点击一个按钮X

var viewModel = { 

    items: ko.observableArray(['one', 'two', 'three']) 
}; 

下拉如果我上一按,当前选择的项目“一”会被禁用,并且只会在下拉菜单中启用,如果我点击一个按钮。有人可以帮助我使用代码示例和逻辑。请示例代码应该只在淘汰JS没有jQuery或JavaScript的请。

回答

1

如果你已经显示了你的尝试,那会更好。
有不同的方法来做到这一点。下面是一个方法使用基因敲除:
实施例:https://jsfiddle.net/kyr6w2x3/43/

HTML:

<select data-bind="foreach: items,value:selectedOption"> 
    <option data-bind="value: value, text:name, attr:{'disabled' :IsDisable}" ></option> 
</select> 
<input type="button" data-bind="click:btnClicked" value ="Click To enable one"> 

JS型号:

function YourViewModel() { 
    var self = this ; 
    var options = [ {name: 'One' , value :'1'},{name: 'two' , value :'2'},{name: 'three' , value :'3'}]; 
    self.items = ko.observableArray(); 
    self.selectedOption = ko.observable(); 

    $.map(options, function (item) { 
     self.items.push(new drowpDownOptionViewModel(item)); 
    }); 
    // subscribe to selected option 
    self.selectedOption.subscribe(function (newValue) { 
     // if One is selected make it disable 
     if(newValue == 1){ 
      ko.utils.arrayForEach(self.items(), function (item) { 
       return item.IsDisable(item.value() == 1); 
      }); 
     } 
    }, self); 

    self.btnClicked = function(){ 
    ko.utils.arrayForEach(self.items(), function (item) { 
      item.IsDisable(false); 
    }); 
    } 
    } 
function drowpDownOptionViewModel (data){ 
    var self = this; 
    self.name = ko.observable(data.name); 
    self.value = ko.observable(data.value); 
    self.IsDisable = ko.observable(false); 
} 


ko.applyBindings(new YourViewModel()); 

更新了例https://jsfiddle.net/kyr6w2x3/44/

+0

Matt我想修改代码,所以如果我点击'one',现在就禁用它,如果我点击两个“One and Two”被禁用,那么第三个是禁用的。但是,只要我点击一个下拉选项,就会为该选项设置一个按钮,然后点击该按钮将只启用该选项。启用按钮将不可见,除非我点击任何选项,当启用该选项时该按钮将隐藏。请注意,我可以启用禁用任何选项1,2或3或全部三个,所以按钮数量将等于选项数量。马特请帮助我是新的敲除 –

+0

这里是我需要的链接,我想创建这个纯粹淘汰赛的例子。 http://jsfiddle.net/pd5Nk/1/ –

+0

这里是你解释的链接。 https://jsfiddle.net/kyr6w2x3/44/ –