我有一个MVC Razor项目,在我看来,我有一个Html.TextBoxFor
data-bind="disable: setRoot"
。 Select2 jquery插件使用此input
。
我的问题是disable
绑定无法正常工作。
这是我的代码:
<div class="control-label">Category</div>
<div class="input-group">
<div class="input-group-addon"><label><input data-bind="checked: setRoot" type="checkbox"> root</label>
</div>
@Html.TextBoxFor(m => m.Create.IdCategory, new { id = "QuickSearchMainCategory", data_bind = "disable: setRoot, value: model.Create.IdCategory", @class = "form-control" })
</div>
和我的js:
self.setRoot = ko.observable(true);
self.beRoot = ko.computed(function() {
if (self.setRoot() === true) {
self.model.IdCategory(self.model.IdRootCategory());
} else {
self.model.IdCategory(null);
}
});
$("#QuickSearchMainCategory").select2({
placeholder: "Category search",
minimumInputLength: 3,
width: 'resolve',
ajax: {
url: urlQuickSearchCategory,
contentType: 'application/json',
dataType: 'json',
type: 'POST',
traditional: true,
quietMillis: 400,
data: function(term, page) {
var data = {
term: term
};
return data;
},
results: function(data, page) {
return { results: data };
}
},
dropdownCssClass: "bigdrop",
formatResult: function(item) { return item.id + " - " + item.label; },
formatSelection: function(item) { return item.id + " - " + item.label; },
escapeMarkup: function(m) { return m; }
});
如果我检查html,则禁用正在运行,但不是整个select2元素,而是仅使用id为QuickSearchMainCategory
的输入。
我需要做什么?
答案 0 :(得分:0)
Select2不能与'禁用'绑定一起使用,因为你必须明确地告诉select2使用它的内置函数来禁用它自己。
您必须使用此功能禁用/启用它:
$('#QuickSearchMainCategory').select2('disable');
$('#QuickSearchMainCategory').select2('enable');
您必须在ko viewmodel中执行此操作,因为仅设置禁用的HTML属性是不够的。