表格';选择';元素返回的值不正确


Form 'SELECT' element returning incorrect value

你好,我有一个表单选择元素,如下所示:

<select name="color" id="color">
    <option value="1" label="Red">Red</option>
    <option value="2" label="Green">Green</option>
    <option value="3" label="Blue">Blue</option>
</select>

当我提交表格并检查$_POST时,我得到:

阵列("颜色"=>"红色")

应该在哪里:

阵列("颜色"=>"1")

我有点困惑,这会和标签属性有关吗?

----编辑----

dojo.addOnLoad(function() {
    dojo.forEach(zendDijits, function(info) {
        var n = dojo.byId(info.id);
        if (null != n) {
            dojo.attr(n, dojo.mixin({ id: info.id }, info.params));
        }
    });
    dojo.parser.parse();
});
var zendDijits = [{"id":"color","params":{"autocomplete":"true","required":"true","dojoType":"dijit.form.ComboBox"}},...

您的代码看起来是有效的,但标签可能会干扰某些内容。由于你不需要它(你使用的文本与选项标签之间的文本相同),我建议你删除它。

试试这个方法:

<select name="color" id="color">
  <option value="1">Red</option>
  <option value="2">Green</option>
  <option value="3">Blue</option>
</select>

有关label属性的更多信息。

定义和用法

label属性指定选项的较短版本。

较短的版本将显示在下拉列表中。

尽管问题中没有提供信息供任何人回答,但问题的解决方案是:

表单元素在Zend Framework中创建为Zend_Dojo_form_element_ComboBox,我在文档中发现了以下信息

组合框返回标签值,而不是选项值可能导致期望值的脱节。因此,组合框不要自动注册InArray验证器(尽管FilteringSelects做)。

将元素更改为Zend_Dojo_Form_element_FilteringSelect,问题得到了解决,现在工作正常。

感谢@devdRew提出了正确的问题,让我想到了dojo/dijit改变发布内容的价值。