2015-04-24 160 views
0

我有html窗體正在使用knockout操縱控件的啓用/禁用模式。複選框標籤啓用禁用knockoutjs

我有文本框控件和複選框控件,通過按鈕操作,如果點擊了按鈕,那麼它們可以被編輯,否則它們被禁用。

問題與複選框控件有關,因爲它們的標籤周圍添加了啓用/禁用類,因此儘管已禁用的屬性已從複選框控件中刪除,但該標籤仍具有禁用的屬性並且無法使用。

這是我有:

<table width="95%" data-bind="with: settings"> 
    <tr> 
     <td style="width:20%" valign="top">q1<br /> 
      <label class="label_yesno"> 
       <input type="checkbox" data-bind="checked: prop_2, enable: editMode" /> 
      </label> 
     </td> 
     <td style="width:5%"></td> 
     <td valign="top">q2<br /> 
      <label class="label_yesno"> 
       <input type="checkbox" data-bind="checked: prop_34, enable: editMode" /> 
      </label> 
     </td> 
    </tr> 
    <tr> 
     <td></td> 
    </tr> 
    <tr> 
     <td valign="top">q3 
       <br /> 
      <label class="label_yesno"> 
       <input type="checkbox" data-bind="checked: prop_52, enable: editMode" /> 
      </label> 
     </td> 
     <td></td> 
     <td valign="top">q4:<br /> 
      <input type="text" style="width: 95%" data-bind="value: prop_12, enable: editMode" /> 
     </td> 
    </tr> 
</table> 
<script runat="server"> 
protected void Page_Load(object sender, EventArgs e) 
{ 
    string script = @" 
    function settingsViewModel() { 
     return { 
      prop_2: ko.observable(false), 
      prop_12: ko.observable(''), 
      prop_34: ko.observable(false), 
      prop_52: ko.observable(false) 
     }; 
    };"; 
    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "settingsvm", script, true); 
} 
</script> 

初始加載控件被禁用:

enter image description here

當我點擊編輯按鈕發生這種情況:

enter image description here

正如你所看到的,禁用屬性是從複選框中刪除的,但不是從包裝複選框的標籤中刪除。

任何想法如何解決這個問題?

+1

禁用的類與禁用的屬性不同。使用css綁定來更改類:

+0

謝謝@RoyJ請將其寫爲答案,以便我可以將您的答案標記爲正確。 – Laziale

回答

1

對於標籤,您有一個css類名稱「disabled」,並且輸入的HTML禁用屬性。淘汰賽控制他們不同。使用css綁定來控制類。

​​