Combobox 启用和禁用剑道组合框时出现错误
我正在使用剑道组合框。我已经编写了下面的代码来启用和禁用comboboxCombobox 启用和禁用剑道组合框时出现错误,combobox,kendo-ui,Combobox,Kendo Ui,我正在使用剑道组合框。我已经编写了下面的代码来启用和禁用combobox function enableDisableFrameworkAndAltFrameworkVersion(platformVersion) { var comboBox = $("#selFrameworkVersion").data("kendoComboBox"); if (platformVersion === 1 ) { comboBox.enabl
function enableDisableFrameworkAndAltFrameworkVersion(platformVersion) {
var comboBox = $("#selFrameworkVersion").data("kendoComboBox");
if (platformVersion === 1 ) {
comboBox.enable(false);
}
}
但这段代码给我的错误是“UncaughtTypeError:无法调用undefined的'enable'方法”
请帮忙。提前谢谢
现在,我在下面的链接中遵循了一个示例
所以现在我更改了html中的代码,并向剑道组合框添加了启用参数,如下所示
<input id="selFrameworkVersion" data-bind="kendoComboBox: { dataTextField: 'Name', dataValueField: 'Id', data: $root.versionListByProductType, value: $root.editFrameworkVersion, enabled: enableFrameWorkCombo} />
self.enableFrameWorkCombo = ko.observable(true);
function enableDisableFrameworkAndAltFrameworkVersion(platformVersion) {
var comboBox = $("#selFrameworkVersion").data("kendoComboBox");
if (platformVersion === 1 ) {
$('#multiAltVersion').attr("disabled", true);
//comboBox.enable(false);
self.enableFrameWorkCombo(false);
return;
}
else if (platformVersion === 2 || platformVersion === 3) {
//comboBox.enable(true);
self.enableFrameWorkCombo(true);
$('#multiAltVersion').attr("disabled", true);
}
else {
//comboBox.enable(true);
self.enableFrameWorkCombo(true);
$('#multiAltVersion').attr("disabled", false);
}
}
然后像下面这样改变了我的函数
<input id="selFrameworkVersion" data-bind="kendoComboBox: { dataTextField: 'Name', dataValueField: 'Id', data: $root.versionListByProductType, value: $root.editFrameworkVersion, enabled: enableFrameWorkCombo} />
self.enableFrameWorkCombo = ko.observable(true);
function enableDisableFrameworkAndAltFrameworkVersion(platformVersion) {
var comboBox = $("#selFrameworkVersion").data("kendoComboBox");
if (platformVersion === 1 ) {
$('#multiAltVersion').attr("disabled", true);
//comboBox.enable(false);
self.enableFrameWorkCombo(false);
return;
}
else if (platformVersion === 2 || platformVersion === 3) {
//comboBox.enable(true);
self.enableFrameWorkCombo(true);
$('#multiAltVersion').attr("disabled", true);
}
else {
//comboBox.enable(true);
self.enableFrameWorkCombo(true);
$('#multiAltVersion').attr("disabled", false);
}
}
现在它给了我错误
Uncaught Error: Unable to parse bindings.
Message: ReferenceError: enableFrameWorkCombo is not defined;
Bindings value: kendoComboBox: { dataTextField: 'Name', dataValueField: 'Id', data: $root.versionListByProductType, value: $root.editFrameworkVersion, enabled: enableFrameWorkCombo, optionsCaption: 'Please select Version...' }
我在这里做错了什么?事实表明,
未捕获类型错误:在执行时无法调用未定义的方法“enable”:
function enableDisableFrameworkAndAltFrameworkVersion(platformVersion) {
var comboBox = $("#selFrameworkVersion").data("kendoComboBox");
if (platformVersion === 1 ) {
comboBox.enable(false);
}
}
表示组合框未定义。因为它是计算$(“#selFrameworkVersion”)的结果。data(“kendoComboBox”)
表示有一个id为selFrameworkVersion
的HTML元素,但它不是kendoComboBox
请检查调用此函数时,kendoComboBox
是否已实际初始化
编辑:
下面的示例(在上运行)使用上述函数启用/禁用组合框
function enableDisableFrameworkAndAltFrameworkVersion(platformVersion) {
var comboBox = $("#selFrameworkVersion").data("kendoComboBox");
console.log("combobox", comboBox);
if (platformVersion === 1) {
comboBox.enable(false);
} else {
comboBox.enable(true);
}
}
var viewModel = kendo.observable({
data : [
{ "Id": 1, "Name": "node1" },
{ "Id": 2, "Name": "node2" },
{ "Id": 3, "Name": "node3" },
{ "Id": 4, "Name": "node4" },
{ "Id": 5, "Name": "node5" }
],
enableFrameWorkCombo: function () {
alert("hello");
}
});
$("#disable").on("click", function () {
enableDisableFrameworkAndAltFrameworkVersion(1);
});
$("#enable").on("click", function () {
enableDisableFrameworkAndAltFrameworkVersion(2);
});
kendo.bind($("#selFrameworkVersion"), viewModel);
HTML是:
<div><a href="#" id="disable" class="k-button">Disable</a></div>
<div><a href="#" id="enable" class="k-button">Enable</a></div>
<input id="selFrameworkVersion"
data-role="combobox"
data-text-field="Name"
data-value-field="Id"
value="2"
data-bind="source : data, enabled: enableFrameWorkCombo"/>
请帮帮我有人吗?请帮帮我。头部撞击墙壁:(如果是这种情况,那么它也不应该在combobox中加载数据?我说的对吗?我说的是关于事情发生的顺序。它可能会加载数据,但在运行此函数之后。我只能看到代码的一小部分,但如果控制台说未定义没有启用和唯一的启用我看到的应用于名为comboBox
的东西,那么comboBox
需要是未定义的
。如何以及在哪里定义它?请告诉我。调用$(“#selFrameworkVersion”)。kendoComboBox({…})
代码中的下一条指令调用函数enableDisableFrameworkAndAltFrameworkVersion
。这可能吗?如果我尝试在您提到的代码中调用函数enableDisableFrameworkAndAltFrameworkVersion,则会出现错误,如“get”、“set”或属性名后跟“:”