启用/禁用输入 - 敲除

时间:2015-04-10 12:57:47

标签: javascript html asp.net-mvc input knockout.js

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

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

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

我可以禁用/启用表单中的所有输入,或者我只需要逐个执行此操作吗?

2 个答案:

答案 0 :(得分:11)

使用纯粹的淘汰赛,你可以做到这一点,基本上切换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/

答案 1 :(得分:3)

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

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

ko.applyBindings(new vm());
&#13;
<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>
&#13;
&#13;
&#13;

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