2013-10-11 92 views
0

我在頁面上使用了dojo checkedmulitselect,並讓它正常工作。 我如何配置它,以便下拉菜單打開,無論我點擊哪個控件?目前只有當我點擊控件的箭頭部分時纔會打開。 這可能嗎?Dojo CheckedMultiSelect下拉菜單,當點擊文本時如何打開

我從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(); 

}); 
+0

您可以發佈您已使用的代碼以及您嘗試過的方法嗎?這在試圖回答你的問題時很有用。 –

+0

嗨,這裏是我使用的代碼。我看到一個符合我需求的例子,除了打開下拉列表的唯一方法是單擊向下箭頭。 – blu10

回答

1

我的經理通過更新與下面的代碼的jsfiddle例如要做到這一點,只是後checkedMultiSelect.startup():

checkedMultiSelect.on('click', function(evt){ 
    if(evt.target.nodeName == "INPUT"){ 
     checkedMultiSelect.dropDownButton.toggleDropDown(); 
    } 
}); 
+0

嗨塞巴斯蒂安,工作完美...感謝您的幫助!..非常感謝。 – blu10

相關問題