0

我正在使用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");
    });

因此,按照上面的代码,我应该得到一个下拉菜单,并且能够更改下拉菜单中的值并在dojo.connect. 虽然我确实得到了一个默认选择的下拉菜单option1,但是我无法选择option2. 请注意,这两个选项都在下拉列表中可见,但选择不起作用。我是 dojo 的新手,但从所有示例来看,这似乎是进行下拉的最低要求。我将不胜感激任何反馈。编辑:事实证明,如果我设置这样的选项,[{label: 'option1', value: 1}, {label: 'option2', value:2}]那么一切都按我的意愿工作。但是有人可以解释一下 value 在这里的作用是什么,为什么它必须一直是整数?

4

1 回答 1

0

如果您提交包含您的选择的表单,该值是将发送到服务器的文本。

它类似于option带有 value 属性的标签:<option value="op1">option1</option>。如果省略标签上的 value 属性,则提交的文本将只是标签文本“option1”。

这些值不必是整数 - 您可以使用 选项{label: foo, value: foo},只要 foo 在选项中是唯一的。如果您在此处省略 value 属性,则提交的值将是未定义的,并且 dijit 将(如您所见)表现得通常很奇怪。

经过一些实验后进行编辑:使用 Select dijit 时,options数组中的值(或者,实际上是存储中的 id)必须是字符串。否则,给选择一个默认值将不起作用。例如:

new Select({
    value: 3,
    options: [ {label: "foo", value: 1}, {label: "bar", value: 3}]
})

..不会将“bar”设置为默认选择选项,并且在下拉列表中突出显示所选项目不起作用。您必须使用带有字符串值的选项数组:

    options: [ {label: "foo", value: "1"}, {label: "bar", value: "3"}]

不是 100% 确定这背后的原因。

于 2012-12-12T18:25:37.307 回答