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