0

如果使用 HTML 标记,我如何设置dijit.form.Select 下拉菜单的样式。

<select id="sourceselect"   dojoType="dijit.form.Select" style='width:200px' onChange="changeDetected();">
</select>

为了清楚起见,它希望设置填充内容的下拉菜单的样式。我想更改该菜单的高度并在超出高度时使用滚动条。

我正在使用 Dojo 1.6 版。这是一个小提琴示例:http: //jsfiddle.net/NH7dd/

编辑:为什么会有缺点?

4

2 回答 2

3

Dojo 生成的菜单放置在 DOM 节点的根目录中。菜单以某种方式相对于文本字段定位是一个常见错误,但事实并非如此。

如果你想改变菜单的样式,那么你可以使用下面的 CSS 选择器:

div[dijitpopupparent="sourceselect"] > .dijitMenu {
    /** Your CSS */
}

之所以有效,是因为菜单被包裹在一个dijit/popup. 此弹出窗口允许显示/隐藏菜单,并且您可以看到它有一个属性,该属性dijitpopupparent具有该字段的原始 ID。

我还更新了您的 JSFiddle,现在看起来像这样。但我真的不建议像这样更改菜单的行为,因为您可能会弄乱组合框的原始功能/行为。我的意思是,现在我在获取某些值时遇到问题,因为一个“滚动刻度”已经传递了一个值。使用更新后的样式,我什至无法正确选择“2”。


编辑:在更新的 JSFiddle 中,滚动条将始终可见,如果您希望滚动条仅在有更多选项时出现,则更overflow-y: scroll改为overflow-y: auto.

于 2013-10-09T11:17:31.667 回答
0

您可以设置 maxHeight 的属性。

<select id="sourceselect"   
dojoType="dijit.form.Select"
data-dojo-props="maxHeight: 200" 
style='width:200px' 
onChange="changeDetected();">
</select>

此外,dojo 的新语法是“data-dojo-type”而不是“dojoType”。

这是显示 maxHeight 属性的 JSFiddle。(我使用了 dojo 1.9,但 maxHeight 在 1.6 中可用) http://jsfiddle.net/NH7dd/17/

于 2013-10-07T18:25:07.133 回答