0

剣道コンボボックスを使用しています。コンボボックスを有効および無効にするコードを以下に記述しました

  function enableDisableFrameworkAndAltFrameworkVersion(platformVersion) {

        var comboBox = $("#selFrameworkVersion").data("kendoComboBox");

        if (platformVersion === 1 ) {
            comboBox.enable(false);

        }
    }

しかし、このコードは「Uncaught TypeError: 未定義のメソッド 'enable' を呼び出せません」というエラーを表示します。

助けてください。前もって感謝します。

今、私は以下のこのリンクの1つの例に従いました 剣道コンボを無効にする

だから今、私は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);
    }
}

今、それは私にエラーを与えます

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...' }

ここで何が間違っていますか?

4

1 に答える 1

1

実行中に表示される事実"Uncaught TypeError: Cannot call method 'enable' of undefined "

function enableDisableFrameworkAndAltFrameworkVersion(platformVersion) {
    var comboBox = $("#selFrameworkVersion").data("kendoComboBox");
    if (platformVersion === 1 ) {
        comboBox.enable(false);
    }
}

ということcomboBoxですundefined。これは計算の結果であるため、$("#selFrameworkVersion").data("kendoComboBox")id を持つ HTML 要素があることを意味しますselFrameworkVersionが、それはkendoComboBox.

この関数を呼び出すときにkendoComboBoxが実際に初期化されていることを確認してください。

編集:

次の例 ( http://jsfiddle.net/OnaBai/qtaAS/で実行) は、上記の関数を使用して ComboBox を有効/無効にします...

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"/>
于 2013-02-05T23:17:05.580 に答える