Dijit选择,Combobox中的项目禁用= true不起作用

时间:2016-12-19 13:04:13

标签: javascript dojo dijit.form

这是我的代码,但不起作用。它属于一个组合框。应禁用某些项目。

var data = [];

for (i = 0; i < items.length; i++) {
     data.push({id: items[i].id, label: "foobaa"});
     data.getOptions(items[i].id).disabled = true;
}

var memory = new Memory({
    idProperty: "id",
    data: data
});

this._widget.set("store", memory);

我在fiddle.net上发现了一个代码狙击手,但是我无法将其转换为我的问题。

http://jsfiddle.net/g00glen00b/akcZy/

dojo的其他超级文档也没有帮助我: - (

http://dojotoolkit.org/documentation/tutorials/1.10/selects_using_stores/

3 个答案:

答案 0 :(得分:1)

我做了一些改变尝试这个,让我知道这是你的需要吗?使用以下代码禁用所有选择项。

 var data = [];

for (i = 0; i < myData.length; i++) {
  data.push('{id: myData[i].id, label: "foobaa"}');
  registry.byId("mySelect").getOptions(myData[i].id).disabled = true;
}

http://jsfiddle.net/f3snxrrd/

http://jsfiddle.net/5pgkkf0z/

答案 1 :(得分:0)

items: {
        mutators: {
            value: [],
            type: verify.ARRAY
        },
        widget: {
            updateI18n: true,
            mapping: function (widget, items) {

                if (this._widget) {
                    var i;
                    var data = [];


                    for (i = 0; i < items.length; i++) {
                        data.push({id: items[i].id, label: i18n.resolveSequence(items[i].label)});
                        //register.byId(data).getOptions((items[i].value).disabled = true);
                    }


                    var memory = new Memory({
                        idProperty: "id",
                        data: data
                    });

                    this._widget.set("store", memory);

                    this._widget.closeDropDown(true);
                    this._widget.reset();

                    if (items.length === 0) {
                        this._enabledItems = false;
                    }
                    else if (items.length === 1) {
                        this.set("selectedId", items[0].id);
                        this._enabledItems = (this.get("selectedId") !==    items[0].id);
                    }
                    else {
                        this._enabledItems = true;
                    }

                   this._widget.set("disabled", !(this._enabledState && this._enabledItems ));
                }
            }
        }
    },




_createWidget: function () {
        var ret;
        ret = new Select({id: this.uniqueId, disabled: true, labelAttr: "label", labelType: "Text", required: false, store: new Memory({data: []})});


        var that = this;
        ret.own(on(ret, "change", function (value) {that._onChange(value); }));

        return ret;
    },

答案 2 :(得分:0)

这是items数组:

enter image description here

来自jsfiddle.net的代码

http://jsfiddle.net/8m52n81u/11/

我无法更改项目数组: - /

items = [{
  id: "0",
  label: key[{0: "foo", 1: "baa"}]
}, {
  id: "1",
  label: key[{0: "foo", 1: "baa"}]
}];

require([
 "dojo/ready",
 "dijit/registry",
 "dijit/form/Select",
 "dojo/store/Memory",
 "dojo/parser"
], function(ready, registry) {
 ready(function() {

   var data = [];

   for (i = 0; i < items.length; i++) {
     data.push('{id: items[i].id, label: items[i].label}');
     registry.byId("uniqueId").getOptions(items[i].id).disabled = true;
   }

  });
});