我正在使用dojo 1.6,我遇到的问题非常独特。请查看以下代码:
var dd = new dijit.form.Select({
id: 'dd',
options: [{label:'option1'}, {label: 'option2'}],
});
dojo.connect(dd, "onChange", this, function (){
console.debug("trying to catch the change");
});
因此,根据上面的代码,我应该得到一个下拉列表,并且能够更改drop中的值并在dojo.connect
中捕获事件。虽然我确实收到了一个下拉列表,默认情况下会选择option1
,但我无法选择option2
。请注意,这两个选项在下拉列表中都可见,但选择不起作用。
我在道场上相当新,但从所有的例子来看,这似乎是下拉的最低要求。我将不胜感激任何反馈。
编辑:
事实证明,如果我设置[{label: 'option1', value: 1}, {label: 'option2', value:2}]
之类的选项,那么一切都按我的意愿运作。但有人可以解释一下这里的价值角色是什么,为什么它一直都是整数?
答案 0 :(得分:0)
如果您提交包含您的选择的表单,则该值是将发送到服务器的文本。
它与option
标记类似,其值属性为<option value="op1">option1</option>
。如果省略tag上的value属性,则提交的文本将只是标签文本“option1”。
值不必是整数 - 只要foo在选项中是唯一的,您就可以选择{label: foo, value: foo}
。如果你在这里省略了value属性,那么提交的值将是未定义的,并且dijit将(正如你所注意到的)表现得很奇怪。
经过一些实验后编辑:使用Select dijit时,options
数组中的值(或者实际上是商店中的ID)必须是字符串。否则,给选择默认值将不起作用。 E.g:
new Select({
value: 3,
options: [ {label: "foo", value: 1}, {label: "bar", value: 3}]
})
..将不设置为“bar”作为默认选定选项,并在下拉列表中突出显示所选项目不起作用。您必须使用带有字符串值的选项数组:
options: [ {label: "foo", value: "1"}, {label: "bar", value: "3"}]
不是100%肯定这背后的原因。