无法在道场选择中选择任何选项

时间:2012-12-12 15:39:55

标签: javascript dojo dijit.form

我正在使用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}]之类的选项,那么一切都按我的意愿运作。但有人可以解释一下这里的价值角色是什么,为什么它一直都是整数?

1 个答案:

答案 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%肯定这背后的原因。