获取dojo组合框选定项的ID值

时间:2012-05-13 05:26:35

标签: dojo

    var xhrArgs = {
     url: "../Person/GetAll",
         handleAs: "json",
         preventCache: true,
       load: function (data, ioargs) {
            var jsonString = dojo.toJson(data)
            var dataStore = new dojo.store.Memory({ data:
            dojo.fromJson(jsonString) });
    var personCmb = dijit.byId('cmbSingers');
                        if (personCmb == null)
 {
     var cobox = new dijit.form.ComboBox({ id: "cmbSingers", name: "Name", store: dataStore, searchAttr: "Name" }, "cmbSingers");

                                cobox.startup();
                            }

     function cmbSingers_OnSelected() {

               alert(dijit.byId('cmbSingers').get('value')); **this return the Text, But I want to get Id of Select value**     

            }

2 个答案:

答案 0 :(得分:1)

对于在2016年寻找解决方案的人来说+ ... 我遇到了同样的情况,并找到了一种从Dojo ComboBox中获取所选选项值的方法。不要只使用.value或.get(' value'),而是使用.item.value:

dijit.byId('someComboBox').item.value

.item将返回一个这样的对象供您使用: 对象{id:" 1",值:" 1",名称:"一个"}

详细说明...假设您使用选择来定义ComboBox的选项,如下所示:

<select dojoType="dijit.form.ComboBox" id="someComboBox" maxlength="30">
   <option value=""></option>
   <option value="1">One</option>
   <option value="2">Two</option>
   <option value="3">Three</option>
</select>

假设您选择&#34; One&#34;选项。
致电 dijit.byId(&#39; someComboBox&#39;)。值将返回&#34; One&#34; , 但是调用 dijit.byId(&#39; someComboBox&#39;)。item.value 将返回&#34; 1&#34;

答案 1 :(得分:0)

Mkay,json是这样的?

{ identifier: 'Id', items: [ { Id: '1', name:'foo', age: 12 }, { Id: '2', name:'bar', age: 30 } ] }

您在变量dijit.form.ComboBox中有cobox,变量dojo.data.ItemFileReadStore中有store

dojo.connect(cobox, "onChange", function() {

  var val = this.get("value"),
    id = "",
    matcher = new RegExp("^" + val + "$");

  dojo.some(store._arrayOfAllItems, function(item, idx) {

   if(matcher.test(store.getValue(item, "name")) {
      id = store.getValue(item, "Id");
      return true; // breaks .some loop
   }
  });

});