0

我正在实施注册表单,当我点击提交按钮时,我想使用Knockout禁用文本框。如何使用Knockout的observables动态禁用文本框?

我曾尝试以下:

var viewModel = { 
    Textboxcontrol: ko.observable(true), // by default textbox is enable to edit 
    Register: { 
     Init: function() { 
     Textboxcontrol= false; // Updating the value to false 
           // so Textbox should be disabled. 
    } 
}; 

ko.applyBindings(viewModel); 

在UI我写了如下

<input data-bind="value: Name, enable: Textboxcontrol" 
     type="text" autocomplete="off" /> 

但问题是,如果我的值更改为Textboxcontrol= false;也是其考虑的价值,因为只有True。 。和文本框不禁用。

回答

2

由于Textboxcontrol是一个可观察对象,因此必须通过调用它作为函数来更改它的值。另外,您必须使用this访问“Init”函数内的Textboxcontrol属性:

var viewModel = { 
    Name: ko.observable(''), 
    Textboxcontrol: ko.observable(true), 
    Register: { 
    Init: function() { 
     this.Textboxcontrol(false); 
    } 
    } 
}; 
ko.applyBindings(viewModel); 
+0

非常感谢您的回复。当我应用this.Textboxcontrol(false)我得到的脚本问题,“对象不支持属性或方法'Textboxcontrol'。可能是什么问题?任何想法?谢谢 – user2010114

+0

这里是一个完全相同的解决方案,我提出的小提琴:http://jsfiddle.net/HbfhB/。如果你的代码不起作用,可能还有其他问题需要解决(你可以把它发布到什么地方吗?) – alepage

+0

我确定在js文件中有一个小错误..这里是js文件,并感谢您的帮助http://jsfiddle.net/deepakreview/9bkMS/1/ – user2010114