dijit.form.Select
1)创建:
var division = new dijit.form.Select({
id: "Division",//id必须唯一
name: 'Division',
intermediateChanges: "false",
iconClass: "dijitNoIcon",
emptyLabel: " ",
scrollOnFocus: "true",
autoWidth: "true",
style: "width:150px;",
sortByLabel: false, //默认会根据label进行排序,设为false可保证原有顺序
options: [
{ label: '山东', value: '山东', selected: true },//默认选中该项
{ label: '河北', value: '河北' },
{ label: '天津', value: '河北' }
]
}).placeAt(td22);//设置显示的位置,这里为table中的一个单元格;也可通过division .placeAt(td22);设置
2)通过Store创建
function GetRegionStore(dataType) {
switch (dataType) {
case "山东":
var store = new dojo.data.ItemFileReadStore({
data: {
identifier: 'id',
label: 'name',
items: [
{ name: "济南", id: "济南" },
{ name: "青岛", id: "青岛" },
{ name: "济宁", id: "济宁" },
{ name: "潍坊", id: "潍坊" }
]
}
});
return store;
......
}
}
var store = GetRegionStore("山东");
dijit.byId("Division").set("store", store);
3)绑定事件
var selector = dijit.byId("Division");
selector.on("change", function () {
//To Do Code
});
或
dojo.connect(dijit.byId("Division"), "onChange", function (newValue) {
//To Do Code
});
注意:
两种方式中,事件名称的区别;
注意注册事件时事件名对大小写敏感;
dojo.byId 取到的是dom节点,dijit取到的是widget元素;dom节点不能用来绑定事件;
绑定事件的代码可放在声明组件的代码之后,不必考虑元素是否已经加载到页面中,未加载的话是否会无法注册(初学者,具体原理不太明白,多次试验后确定如此)。
如果value绑定为某个对象,有可能存在change事件只能触发一次的问题,可以将value绑定到具体的字段,比如对象id等
4)获取/设置
var value = selector.get('value');
selector.set('value', selectedDivision);
selector.att('value', selectedDivision);
两种设置方法均有效,也都可以触发onChange事件,之间的区别尚不清楚。
问题:
下拉列表中,文字的字体大小和选中后文本框内的不同,需要如何控制?