2016-08-12 26 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/ –