表单'SELECT'元素返回不正确的值

时间:2012-01-12 17:54:42

标签: php html forms

您好我有一个表单选择元素如下:

<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时,我得到:

array('color'=&gt;'Red')

它应该在哪里:

array('color'=&gt;'1')

我有点困惑,它是否与label属性有关?

----编辑----

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"}},...

2 个答案:

答案 0 :(得分:1)

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

以这种方式尝试:

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

一些more info on the label attribute

  

定义和用法

     

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

     

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

答案 1 :(得分:0)

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

表单元素在Zend Framework中作为Zend_Dojo_Form_Element_ComboBox创建,我在文档中找到了以下信息:

  

ComboBoxes返回标签值,而不是选项值   会导致期望的脱节。出于这个原因,ComboBoxes   不要自动注册InArray验证器(尽管FilteringSelects   做)。

将元素更改为Zend_Dojo_Form_Element_FilteringSelect,问题已解决,现在工作正常。

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