Enable/Disable 输入 - 敲除

Enable/Disable input - knockout

我想让我的表单在单击按钮后可编辑。

我编写了用于单击按钮的代码,但我不知道如何更改表单中输入的状态。

viewModel.test= function () {
   //code here
}
<input type="text"/> // Enable/Disable this

我可以 disable/enable 填写表格中的所有内容还是我只需要一项一项填写?

你可以通过纯敲除来做到这一点,基本上是切换 isDisabled observable 来更新绑定元素上的 disabled 属性。您可以使用 knockout attr 绑定来设置元素的属性。

var ViewModel = function() {
    var self = this;
    self.isDisabled = ko.observable(false);
    this.disable = function(){
        self.isDisabled(true);
    }
    this.enable = function(){
         self.isDisabled(false);
    }
};

ko.applyBindings(new ViewModel()); 


<div>
    <input type="text" data-bind="attr : {'disabled' : isDisabled}"/> // Sets disabled attribute if isDisabled is true.
    <input type="text" data-bind="attr : {'disabled' : isDisabled}"/>
    <button data-bind="click : disable">Disable</button>
    <button data-bind="click : enable">Enable</button>
</div>

https://jsfiddle.net/xggu9Lv2/2/

我不确定这在 IE8 及以下版本中的支持程度如何,但是您可以使用 knockout 来启用/禁用表单输入:

function vm() {
  var self = this;
  self.hasForm = ko.observable(false);
  self.cellphoneNumber = "";
  self.personName = ""
}

ko.applyBindings(new vm());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
  <input type='checkbox' data-bind="checked: hasForm" />I have a cellphone & a name
</p>
<p>
  <form id="form">
    <label>Your cellphone number:</label>
    <input type='text' data-bind="value: cellphoneNumber, enable: hasForm" />
    <label>Your Name:</label>
    <input type='text' data-bind="value: personName, enable: hasForm" />
  </form>

</p>

...基于ko documentation on "enable."