我如何在 Dojo form.select 选项中设置选中

Posted

技术标签:

【中文标题】我如何在 Dojo form.select 选项中设置选中【英文标题】:how do i set selected in Dojo form.select option 【发布时间】:2012-08-22 16:55:59 【问题描述】:

您好 Dojo 开发人员,我有一个下拉 form.select,它有几个选项,如何设置要选择的选项。假设我想在选择元素中显示第三个选项。我正在查看 dojo 文档,但没有看到 setSelected() 或类似内容。

谢谢

【问题讨论】:

试试selectWidget.set('value', your_option_value)里面 感谢 serjio,这是 attr,但你给了我正确的方向,在这里找到答案:***.com/questions/2215979/… 这不重要。最主要的是它对你有帮助,享受;) 奇怪的是,要拉出选定的选项,我必须从自己的下拉菜单中重新选择它。基本上它只在视觉上设置选定的选项,当我尝试以编程方式获取它时,它不会返回视觉上选择的选项,而是列表中的第一个。 【参考方案1】:

除了 value 之外,您还需要使用 displayValue 属性来设置显示选项。使用类似的东西:

selector.set("displayedValue", "the_text_of_the_option");

或者您可以使用以下命令搜索下拉列表的底层存储:

selectorStore.fetch(query:id: value, onComplete: function (items) 
              dojo.forEach(items, function(item)
                  selector.set("displayedValue", "the_text_of_the_option");
                  selector.set("value", "the_value_of_the_option");
              );
);

希望对您有所帮助。

【讨论】:

谢谢你,这是真的并且有效,让我走上了正确的道路。我已经测试过了。但是我发现了我的错误并实施了不同的解决方案。下面:【参考方案2】:

找到了,是 selector.attr("value", "the_name_of_the_option");

【讨论】:

实际上在Dojo 1.7+ attr() 是deprecated 支持get() 和set()。【参考方案3】:

谢谢,这是真的并且有效。我已经测试过了。但是我发现了我的错误:我正在动态创建选项,并且当我将 .selected = true 添加到选择器时,它会将饱和更改为第一个被选中的选项。 或者如果我申请selector.set("displayedValue", "the_text_of_the_option"); 它直观地显示选定的一个,但实际上,如果我用上面的 selector.set 更改它,在选定的后面仍然是第一个不计量。所以我通过手动创建选定状态来解决它。这样,当我添加它时,字母 id 会保留在所需的位置并相应地进行更改。

此处截取:

    //populate latitude selector
    match = false;
    optionsArr = [];
    for(var i = 0; i < namesLength; i++)
        for(var j = 0, len2 = latNames.length; j < len2; j++)
            if(fieldNames[i].toLowerCase() == latNames[j])

                for (var a = 0; a < namesLength; a++) 
                    var option = ;
                    option.label = fieldNames[i];
                    option.value = i+"";
                    if(i==a)
                        option.selected = true;
                    
                    optionsArr.push(option);
                
                    match = true;
            
        
    
    if(match)
        var drop1 = dijit.byId("selectLatitude");
        drop1.addOption(optionsArr);
    else
        var drop1 = dijit.byId("selectLatitude");
        drop1.addOption(options);//options is an array of options created originally
    

【讨论】:

以上是关于我如何在 Dojo form.select 选项中设置选中的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式更改由标签值对对象填充的 Dojo Form Select 的选定选项

Dojo:如何设置禁用新按钮

如何更改 dijit.form.Select 中元素的顺序

Dojo dijit.form.select:创建新的选择小部件后,旧小部件的选定值无法更改

dijit.form.Select 不会以编程方式设置值

如何添加 optgroup do dijit.form.Select 或其他小部件类型