0

ページで dojo checkedmlitselect を使用していますが、正しく動作しています。コントロールのどこをクリックしてもドロップダウンが開くようにするにはどうすればよいですか? 現時点では、コントロールの矢印部分をクリックしたときにのみ開きます。これは可能ですか?

この例はhttp://jsfiddle.net/phusick/894af/から入手しました

現在のコード:

require(["dojo/parser", "dijit/form/Form"]);

require([
    "dojo/_base/declare",
    "dojo/_base/lang",
    "dojo/_base/array",
    "dojo/on",
    "dojo/dom",
    "dojo/store/Memory",
    "dojo/store/Observable",
    "dojo/data/ObjectStore",
    "dojox/form/CheckedMultiSelect",
    "dijit/Tooltip",
    "dojo/mouse",
    "dojo/dom-attr",
    "dojo/query",
    "dojo/dom-class",
    "dijit/place",
    "dojo/domReady!"
], function( 
    declare,
    lang,
    array,
    on,
    dom,        
    Memory,
    Observable, 
    DataStore,
    CheckedMultiSelect,
    Tooltip,
    mouse,
    domAttr,
    query,
    domClass,
    place
) {

    var memoryStore = new Memory({
        idProperty: "value",
        data: [
            {value: "CT", label: "Label One"}
        ]
    });

    var dataStore = new DataStore({ 
        objectStore: memoryStore,
        labelProperty: "label" 
    });

    var MyCheckedMultiSelect = declare(CheckedMultiSelect, {

        startup: function() {
            this.inherited(arguments);  
            setTimeout(lang.hitch(this, function() {
                this.dropDownButton.set("label", this.label);            
            }));       

        },

        _updateSelection: function() {
            this.inherited(arguments);                
            if(this.dropDown && this.dropDownButton) {
                var numOptionsSelected = 0;
                var label = "";
                array.forEach(this.options, function(option) {
                    if (option.selected) {
                        label += (label.length ? ", " : "") + option.label;                     
                        numOptionsSelected++;
                    }
                });

                if (numOptionsSelected > 0) {
                  this.dropDownButton.set("label", label.length ? label : this.label);
                }

            }
        }       

    });

    var checkedMultiSelect = new MyCheckedMultiSelect ({
        dropDown: true,
        multiple: true,
        label: 'Code Table',
        name: 'queryType',
        store: dataStore
    }, "placeholder");

    array.forEach(checkedMultiSelect.options, function(option){ 
        option.selected = true;     
    });

    checkedMultiSelect.startup();

});
4

1 に答える 1