2016-03-21 17 views
1

私はデータテーブルとモーダルを開くボタンがあるフォームで作業しています。このボタンを常に有効にするように設定する必要があります。私は以下のコードを使ってみましたが、成功しませんでした。foreach内のボタンでデータバインドディセーブル属性が機能しない

ko.applyBindings({ 
 
    editarTexto: function(data) { 
 
    alert("msg") 
 
    }, 
 
    items: [{}, {}, {}] 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 

 
<fieldset data-bind="disable: true"> 
 
    <table class="table"> 
 
    <thead> 
 
     <tr> 
 
     <th class="col-lg-1 ">Texto</th> 
 
     </tr> 
 
    </thead> 
 
    <tbody> 
 
     <tr> 
 
     <td> 
 
      <button type="button" class="form-control" data-bind="click: function() { $root.editarTexto($data) }, disable: false"> 
 
      <span class="glyphicon glyphicon-pencil" aria-hidden="true" data-bind="disable: false">&times;</span> 
 
      </button> 
 
     </td> 
 
     </tr> 
 
    </tbody> 
 
    </table> 
 
</fieldset>

誰も私を助けてもらえますか?

+0

デフォルトでは、ボタンが有効になります。何かがそれを無効にしていて、 'disable'バインディングとは何の関係もありません。 –

+0

私が間違っていない限り、 "これはinput、select、textareaなどのフォーム要素で便利です。" (http://knockoutjs.com/documentation/disable-binding.html) - このリストにはボタン要素はありません。 – TSV

+0

@TSV、あなたは間違いです。これらは単なる例です。しかし、ロイJのコメントにスポットがあるようだ。コードの責任部分は省略されているようだ。ボタンを常に有効にするには、無効化バインディングは必要ありません。それはデフォルトで行う必要があります。 –

答えて

0

タイトルの実際の問題が不明瞭になり、コードの周りを賞賛しています。 disabled属性を持つフィールドセットにのみ、特定のbutton Sを有効にする方法

:コード自体は、しかし、あなたの問題のように言い換えることができることを示していますか?

REPROは、このように非常に小さくすることができる。

<fieldset disabled> 
 
    <input> <!-- should be disabled --> 
 
    <button>x</button> <!-- should be ENabled, but isn't --> 
 
</fieldset>
そして答えは:あなたがすることはできません。唯一の解決策は、 にはを無効にし、 fieldsetを無効にし、ボタンを除くすべての子孫要素 disabledを設定します。


は参考のために、あなたはそれが問題になっている要素にdisabled属性を設定する以外に何もしないことをthe enable/disable binding source fileから見ることができます。

参考

fieldsetdisabled attributeについてMDNのエントリを参照してください。

このブール属性が設定されている場合は、その子孫であるフォームコントロールは、その最初のオプションの要素の子孫を除き、無効になっていること、すなわち編集可能ではありません。マウスクリックやフォーカス関連のようなブラウズイベントは受信されません。多くの場合、ブラウザはグレーのようなコントロールを表示します。


参考のために、またthe AngularJS version of your questionを参照してください。

関連する問題