2013-07-10 68 views
0

我有一個下拉列表的div。 我試圖禁用所有div。我成功了,但我無法禁用下拉列表。 該div由選擇標籤cb3組成。我使用Knock Out(所有你看到的數據綁定)。 條件值:hete.selectedvalue,enable:format.selectedvalue()!='xxx'銷燬我想要創建的禁用。下拉列表未鎖定

<div class="DivStyle1" data-bind="disableByRole: hetel.readOnlyValue"> 
     <div id="div-for-cb3" class="div-for-combo poscombo3""> 
<select id="cb3" onchange="onSelectChange(this.id, this.options[this.selectedIndex].innerHTML)" dir="rtl" class="SelectStyle3" data-bind="options: hete.defaultValue,value: hete.selectedvalue,enable:format.selectedvalue()!='xxx' "><option value="x1">x1</option><option value="x2">x2</option><option value="x3">x3</option><option value="x4">x4</option></select> 
      <span id="label-for-cb3" class="label-for-combo" data-bind="text:hete.selectedvalue"">x4</span> 
     </div> 

     <span class="SpanStyle3">:hete</span> 
     <img id="hetelIMG" onclick="ChangeImg('hete','#heteIMG')" data-bind="attr:{src: myview.hete.readOnlyUrl}" class="ImgStyle3" " src="./idle.png"> 
    </div> 

其他js文件:

ko.bindingHandlers.disableByRole = { 
    update: function(element, valueAccessor, allBindingsAccessor) { 
     var value = valueAccessor(); 
     var allBindings = allBindingsAccessor(); 
     var valueUnwrapped = ko.utils.unwrapObservable(value); 
     var isDisabled = valueUnwrapped == 'true' 
     if (isDisabled) 
     $(element).find('*').attr('disabled', 'disabled') 
          .prop('onclick', false) 
          .css('opacity',0.7); 
    } 
}; 

只有選擇標籤沒有被禁用,爲什麼?

回答

0

我相信你需要添加這個.change()之後。

$(element).find('*').attr('disabled', 'disabled').prop('onclick', false).css('opacity',0.7).change(); 
+0

我做到了。它禁用了選擇標記,但不幸的是現在圖像被破壞 - 空的圖像 - 只有正方形沒有圖像.... – Aviade

+0

可能是由於父div的屬性data-bind =被角色禁用,請取出。然後在這個外部div中創建另一個不包含圖像元素的子div,並將其放在那裏 –